두 줄로 표시되는 텍스트에 대해 grep을 어떻게 수행 하시겠습니까?
예를 들면 다음과 같습니다.
pbsnodes
리눅스 클러스터의 사용률을 반환하는 명령입니다
root$ pbsnodes
node1
state = free
procs = 2
bar = foobar
node2
state = free
procs = 4
bar = foobar
node3
state = busy
procs = 8
bar = foobar
상태가 'free'인 노드와 일치하는 프로세스 수를 결정하고 싶습니다. 지금까지 "프로 크 수"와 "자유 상태의 노드"를 확인할 수 있었지만 모든 무료 프록을 표시하는 하나의 명령으로 결합하고 싶습니다.
위의 예에서 정답은 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
: Stephane의 답변