解析命令 arp -a 仅用于 ip

解析命令 arp -a 仅用于 ip

我需要解析命令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 '()'

相关内容