İki satırda görünen metin için nasıl bir grep yaparsınız?
Örneğin:
pbsnodes
linux kümesinin kullanımını döndüren bir komut kullanıyorum
root$ pbsnodes
node1
state = free
procs = 2
bar = foobar
node2
state = free
procs = 4
bar = foobar
node3
state = busy
procs = 8
bar = foobar
'Ücretsiz' durumunda olan düğümlerle eşleşen proc sayısını belirlemek istiyorum. Şimdiye kadar "proc'ların sayısını" ve "serbest durumdaki düğümleri" belirleyebildim, ancak bunları tüm ücretsiz proc'ları gösteren tek bir komutta birleştirmek istiyorum.
Yukarıdaki örnekte, doğru cevap 6 (2 + 4) olacaktır.
Neyim var
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' yazan her satırı nasıl arayabilirim, ancak üstündeki satır 'state = free' yazıyorsa?
awk
örüntü eşleştirme yapar; gerek yokgrep
: Stephane'nin cevabına