![解析命令 arp -a 仅用于 ip](https://linux22.com/image/157680/%E8%A7%A3%E6%9E%90%E5%91%BD%E4%BB%A4%20arp%20-a%20%E4%BB%85%E7%94%A8%E4%BA%8E%20ip.png)
我需要解析命令arp -a
以仅获取设备的 IP。现在我有
arp -a | awk '{print $2}' | head -1
然而这给了我
(192.168.1.71)
我必须( )
从输出中删除 。如何才能做到这一点?
答案1
您可以使用字符()
作为字段分隔符而不是空格:
arp -a | awk -F'[()]' '{print $2}' | head -1
答案2
使用cut
:
arp -a | awk '{print $2}' | head -1 | cut -d "(" -f 2 | cut -d ")" -f 1
按照评论中的建议更新答案:
cut
解释:
-d
- 充当分隔符并在第一次出现时分割字符串(
-f
- 选择指定的字段。这里选择第二部分x.x.x.x)
我们将此输出作为下一步的cut
输入|
cut -d ")" -f 1
- 这再次分割输入)
,我们选择第一部分,即仅 IP 地址。
答案3
tr
擅长删除不需要的字符之类的事情:
$ tr -d '()' <<< '(192.168.1.1)'
192.168.1.1
总而言之,这将是:
arp -a | awk '{print $2}' | head -1 | tr -d '()'