我是sed/awk脚本的新手。
我想搜索一个字符串,如果匹配,则打印该字符串的下一个单词。
也就是说,我的输出是RXpackets:1000和TXpackets:2000。
使用sed/awk脚本我要搜索,并将值RXpackets和TXpackets值存储到变量中。这意味着1000和2000值。有谁能帮帮我吗?
也建议我哪个脚本awk/sed是最好学习和使用的。
发布于 2013-07-05 02:25:30
我建议从/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"发布于 2013-07-04 14:14:00
您可以遍历此行,当您找到关键字时,您可以捕获它的下一个单词。
... | awk -F: '{for(i=1;i<=NF;i++) if($i~/RXpackets|TXpackets/) print $i"="$(i+1)}'发布于 2013-07-04 13:47:33
试试这个:
sed -n '/[RT]Xpackets/s/.*[RT]Xpackets: *\([0-9]*\).*/\1/p'因为这只打印数字,所以您不能区分哪个是哪个。您可以对RXpackets和TXpackets使用单独的命令来获取它们(更改代码行留给读者作为练习)。
https://stackoverflow.com/questions/17462659
复制相似问题