awk 명령이 있습니다.
awk '/a|b|c/{sum+=1} {if($NF=="e" && sum) count++} END {print sum, count}' file
이제 이것을 파일에 적용한다고 가정해 보겠습니다 letter
.
a e
b d
c e
c f
d e
즉, sum
4가 되어야 하고, 마지막 열이 패턴과 일치하는 2개의 행 count
이므로 2가 되어야 합니다 .e
그러나 내가 발견한 것은 4 3
$NF=e라고 읽혀질 수도 있지만 어떻게 고쳐야 할지 확신할 수 없다는 것입니다.
답변1
count
마지막 열이 문자이고 e
변수 가 0이 아닌 sum
한 변수는 증가합니다 . 일단 실행되면 sum
변수는 0이 아닙니다 sum+=1
. 이는 코드가 입력의 첫 번째 줄(예제 텍스트 제공)을 볼 때 가장 먼저 발생하는 일입니다. 그런 다음 e
두 번째 열에 세 번 나타납니다.
sum
행이 일치 a|b|c
하고 count
행의 마지막 열이 추가로 증가 할 경우 e
:
awk '/a|b|c/ { ++sum; if ($NF == "e") count++ } END { print sum+0, count+0 }' file
카운터가 전혀 증가하지 않으면 블록은 출력이 비어 있는 대신 비어 있도록 +0
보장합니다 .END
0