범위 값에서 일치하는 행을 계산하는 쉘 스크립트

범위 값에서 일치하는 행을 계산하는 쉘 스크립트

나는 이것을 가지고있다 :

 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

관련 정보