if else 조건은 개수가 증가했는지 확인합니다.

if else 조건은 개수가 증가했는지 확인합니다.

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

즉, sum4가 되어야 하고, 마지막 열이 패턴과 일치하는 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보장합니다 .END0

관련 정보