在我的Fedora系统上,我得到以下内容:
$ cat /proc/net/arp
IP address HW type Flags HW address Mask Device
130.48.0.1 0x1 0x2 80:4b:c7:10:3e:41 * wlp1s0
如何使用sed或grep或awk等屏幕编辑器来管道设备的结果(在这种情况下答案是wlp1s0)?
谢谢!
答案 0 :(得分:1)
$ awk '/^[0-9]/{print $6}' /proc/net/arp
wlp1s0
/^[0-9]/
选择以digit,ip
print $6
打印第6列作为设备
答案 1 :(得分:1)
要获取用于退出计算机的接口名称,可以使用:
ip route get 8.8.8.8 | awk 'NR==1 {print $5}'
eth0
即使不止一个inf在线,它也会始终正确。
答案 2 :(得分:0)
awk 'NR>1{print $6}' < /proc/net/arp
如果我们在第一行之后(为了摆脱标题&#34; Device&#34;),请打印第六个字段(用空格分隔)。
答案 3 :(得分:0)
假设您的字段以制表符分隔,如果设备始终显示为最后一列:
$ awk -F'\t' 'NR>1{print $NF}' file
wlp1s0
否则:
$ awk -F'\t' 'NR==1{for (i=1;i<=NF;i++) f[$i]=i; next} {print $(f["Device"])}' file
wlp1s0
答案 4 :(得分:0)
四种方法:
awk 'NR==1{for (i=1;i<=NF;i++) f[$i]=i; next} {print $(f["HW"])}' </proc/net/arp
awk 'NR==2{print $NF}' < /proc/net/arp
sed -nr '/^[0-9]/s#(.*)* (.*)#\2#gp' /proc/net/arp
sed -nr '/^[0-9]/s#(.*)\*[^a-z]*(.*)#\2#gp' /proc/net/arp