awk의 표현식이 true인 횟수를 셉니다.

awk의 표현식이 true인 횟수를 셉니다.

유닉스/awk 코드에서

기본적으로 파일(data1.txt)을 반복하고 파일의 각 줄에 대해 substr($0,29,2) == "04" 횟수를 계산해야 합니다.

데이터1.txt:

6597243042 20160305001100003140152852153019000127000200
6597243042 20160305001100003140170306190306020000000200
6597243042 20160305001100003140170552190552020000000200
6597243042 20160305001100003140201430201543000113000400
6592311319 20160305041100003460072719072839000120001200
6592311319 20160305041100003460072927072952000025001200

이 경우 파일(data1.txt)에서 2줄만 조건(substr($0,29,2)=="04")을 충족합니다.

나는 이것을 할 수 있는 방법을 찾고 있었습니다.

아래는 내 유닉스/awk 코드입니다.

Filename="def"
file="data1.txt"
#awk '{count1=0}'
while IFS= read line
do

   awk '{ if (substr($0,29,2)=="04") {print substr($0,29,4)}}' 

done <"$file"

이것을 어떻게 계산하나요?

답변1

egrep또 다른 방법 (더 이상 사용되지 않는 것을 피하고 사용하는 Archemar + kos에게 감사드립니다 -c)

grep -cE '^.{28}04' data1.txt

답변2

단지 시도

awk 'BEGIN { count = 0 ;} substr($0,29,2) == "04" { count++ ; } END { print count ;}' files

어디

  • substr($0,29,2) == "04"검색조건
  • { count++ ; } 발견되면 개수 증가
  • END마지막에
  • { print count ;}인쇄하세요.

편집하다:

  • count=0@스틸드라이버님 감사합니다

더 쉽게 읽으려면 다음과 같이 awk 명령줄을 입력하면 됩니다.

awk 'BEGIN { count = 0 ;} 
     substr($0,29,2) == "04" { count++ ; } 
     END { print count ;}' files

관련 정보