범위 값과 일치하는 행 수를 계산하는 쉘 스크립트

범위 값과 일치하는 행 수를 계산하는 쉘 스크립트

나는 이것을 가지고있다:

 S=`cat sales.txt`;
    echo "$S" | cut -d: -f5 | grep -E '[0-9][0-9][0-9]' | wc -l

내 텍스트 파일:이름:ID:번호:유형:값

Tom:8:987654:A:67           //1
Dick:9:7651:B:83            //2
Harry:5:21215121:A:92       //3
Molly:2:1231872231:A:44     //4
Megan:123:322:B:145         //5
Russia:8:99231272:B:530     //6
Boleh:123:29321831:C:5000   //7

다섯 번째 열 값이 0-999 범위에 있는 행 수를 계산하려고 합니다.

실행하려고 하면 실제로는 6이어야 하는데 3이 반환됩니다.

답변1

두 자리 숫자가 정규식과 일치하지 않습니다 [0-9][0-9][0-9].

또한 파일을 변수에 저장한 다음 이를 사용하여 인쇄하는 echo것은진짜나쁜 생각. 바라보다왜 printf가 echo보다 나은가요?, 그러나 더 중요한 것은 명령 대신 작업을 cat file수행 할 수 있다는 것입니다.echo

실제로 Awk로 모든 작업을 수행할 수 있으며 그럴 필요도 없습니다 cat. 음수를 표시하지 않았으므로 "1000 미만"만 확인하겠습니다.

awk -F: '$5 < 1000 {a++} END {print a}' sales.txt

관련 정보