我是新手到sed/awk
腳本。
我想搜索一個字符串,如果匹配,然後打印下一個字。搜索一個字符串,並使用sed/awk旁邊的打印?
即我的輸出是RXpackets:1000
和TXpackets:2000
。
使用sed/awk
腳本我想搜索,並將值RXpackets
和TXpackets
值存儲到變量中。這意味着1000
和2000
值。有人可以幫助我嗎?
另外建議我最好學習和使用哪個腳本awk/sed
。
我是新手到sed/awk
腳本。
我想搜索一個字符串,如果匹配,然後打印下一個字。搜索一個字符串,並使用sed/awk旁邊的打印?
即我的輸出是RXpackets:1000
和TXpackets:2000
。
使用sed/awk
腳本我想搜索,並將值RXpackets
和TXpackets
值存儲到變量中。這意味着1000
和2000
值。有人可以幫助我嗎?
另外建議我最好學習和使用哪個腳本awk/sed
。
我會建議從/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"
您可以迭代該行,並在找到關鍵字時捕獲下一個單詞。
... | awk -F: '{for(i=1;i<=NF;i++) if($i~/RXpackets|TXpackets/) print $i"="$(i+1)}'
您可以使用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
>
在什麼格式,你所需要的輸出?
這很酷。謝謝。但是,在我的情況下,它分別取$ 2和$ 10的值..反正非常感謝你 – Riyaz
感謝您接受答案。您正在查找在第3和第11列中表示的R/TX包。第2和第10列表示字節數。 – jgb