![awk의 표현식이 true인 횟수를 셉니다.](https://linux55.com/image/86344/awk%EC%9D%98%20%ED%91%9C%ED%98%84%EC%8B%9D%EC%9D%B4%20true%EC%9D%B8%20%ED%9A%9F%EC%88%98%EB%A5%BC%20%EC%85%89%EB%8B%88%EB%8B%A4..png)
유닉스/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