2行に表示されるテキストに対してgrepをどのように実行しますか?
例えば:
pbsnodes
Linuxクラスタの使用率を返すコマンドです
root$ pbsnodes
node1
state = free
procs = 2
bar = foobar
node2
state = free
procs = 4
bar = foobar
node3
state = busy
procs = 8
bar = foobar
「フリー」状態のノードに一致するprocの数を判別したい。これまで「procの数」と「フリー状態のノード」を特定できましたが、それらをすべてのフリーprocを表示する1つのコマンドに結合したいと思います。
上記の例では、正解は6(2 + 4)になります。
私が持っているもの
root$ NUMBEROFNODES=`pbsnodes|grep 'state = free'|wc -l`
root$ echo $NUMBEROFNODES
2
root$ NUMBEROFPROCS=`pbsnodes |grep "procs = "|awk '{ print $3 }' | awk '{ sum+=$1 } END { print sum }'`
root$ echo $NUMBEROFPROCS
14
「procs = x」と表示されるすべての行を検索するにはどうすればよいですか?ただし、その上の行が「state = free」と表示される場合のみですか?
awk
パターンマッチングを行います。必要ありませんgrep
:ステファンの答えを