我正在尝试获取此命令的一些特定行:
ifconfig
这是命令的输出:
eth0 Link encap:Ethernet HWaddr 00:10:E0:3F:6F:BC
inet addr:10.71.1.30 Bcast:10.71.1.255 Mask:255.255.255.0
inet6 addr: fe80::210:e0ff:fe3f:6fbc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3059275068 errors:0 dropped:1378 overruns:0 frame:0
TX packets:2094779962 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6566542892239 (5.9 TiB) TX bytes:202791652910 (188.8 GiB)
eth1 Link encap:Ethernet HWaddr 00:10:E0:3F:6F:BD
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1417584931 errors:0 dropped:32908 overruns:0 frame:0
TX packets:1284691038 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2256566826674 (2.0 TiB) TX bytes:182643225952 (170.0 GiB)
我只想要包含“Link”和“bytes”字样的行,例如:
eth0 Link encap:Ethernet HWaddr 00:10:E0:3F:6F:BC
RX bytes:6566542892239 (5.9 TiB) TX bytes:202791652910 (188.8 GiB)
eth1 Link encap:Ethernet HWaddr 00:10:E0:3F:6F:BD
RX bytes:2256566826674 (2.0 TiB) TX bytes:182643225952 (170.0 GiB)
答案 0 :(得分:2)
最好的方法必须是使用grep
来过滤线条。例如,使用:
ifconfig | egrep " Link|bytes"
注意我在Link
之前添加了一个空格,以避免匹配以Scope:Link
结尾的行。
您也可以使用:
ifconfig | awk '/ Link/ || /bytes/'
或
ifconfig | grep " Link\|bytes"
答案 1 :(得分:1)
当然grep
是最好的工具。但是,还有其他一些方法可以做同样的事情。也就是说,
ifconfig | sed -n '/Link \|bytes/p'
和
ifconfig | awk '/Link |bytes/'
答案 2 :(得分:0)
ifcofig|perl -lne 'print if(/Link/||/bytes/)'
答案 3 :(得分:0)
这里有一些有用的模式,我遇到的大多数人似乎都不知道。第一个问题与你的问题特别相关。
grep -e是你最好的新朋友
ifconfig | grep -e Link -e bytes
你可以用sed做类似的事情,它还有一个额外的好处,就是打印掉第一行(可能包含一个标题)。在这个例子中,我打印出标题行,任何行都包含LISTEN或'bar'(第二个表达式就是为了强化你不仅限于一个这一事实。)这里,1p正在解决第一个问题。 line,(origin-1),对'p'rint
的操作lsof -Pni | sed -n -e 1p -e '/LISTEN/p' -e '/bar/p'