我是sed/awk
脚本的新手
我想搜索一个字符串,如果匹配,则打印下一个单词。
,即我的输出为RXpackets:1000
和TXpackets:2000
。
使用我要搜索的sed/awk
脚本,并将值RXpackets
和TXpackets
值存储到变量中。这意味着1000
和2000
值。有人可以帮我吗?
还建议我最好学习和使用哪个脚本awk/sed
。
答案 0 :(得分:1)
您可以遍历该行,当您找到关键字时,您可以捕获下一个单词。
... | awk -F: '{for(i=1;i<=NF;i++) if($i~/RXpackets|TXpackets/) print $i"="$(i+1)}'
答案 1 :(得分:1)
我建议您从/proc/net/dev
获取值,而不是使用ifconfig
等来提取它们。
示例:强>
#!/bin/sh
iface=eth0
read RXp TXp <<< $(grep $iface /proc/net/dev | awk '{ print $3, $11 }')
echo "$RXp packages received"
echo "$TXp packages sent"
答案 2 :(得分:0)
试试这个:
sed -n '/[RT]Xpackets/s/.*[RT]Xpackets: *\([0-9]*\).*/\1/p'
由于这只是打印数字,你不知道哪个是哪个。您可以为RXpackets和TXpackets使用单独的命令来自己获取它们(更改行是留给读者的练习)。
答案 3 :(得分:0)
您可以使用perl:
perl -lne 'push @a,/[RT]Xpackets:(\d+)/g;END{print "@a"}'
测试如下:
> echo "my output is RXpackets:1000 and TXpackets:2000" | perl -lne 'push @a,/[RT]Xpackets:(\d+)/g;END{print "@a"}'
1000 2000
>
您需要以什么格式输出?