다른 문자가 포함된 줄 수 계산

다른 문자가 포함된 줄 수 계산

이름이 인수로 제공된 파일을 확인하고 정확히 7자를 포함하는 고유한 줄 수를 인쇄하는 명령을 작성하려고 합니다. 나는 grep이것을 사용하고 있지만 find틀렸다. 무엇을 사용해야 합니까, 어떤 패턴을 사용해야 합니까?

답변1

이것이 당신의 명령일 수도 있습니다. 다음은 명령줄에서 파일 이름을 가져와 그 안에 7개의 문자가 포함된 모든 줄을 출력하는 스크립트입니다.

#!/bin/sh
grep -c '^.......$' "$1"

위의 스크립트를 실행 가능하게 만든 다음(이와 같은 명령을 사용하여 chmod +x script.sh) 확인하려는 파일 이름으로 실행 해야 합니다 ./script.sh file.file

주문하다

grep -c '^.......$'

주어진 파일에서 정확히 7자(공백 포함)를 포함하는 줄 수를 출력합니다.

이는 다음과 같이 단축될 수 있습니다.

grep -cEx '.{7}'

-E표현이 지금 필요하기 때문에 필요 합니다확장 정규식. 이 -x플래그는 표현식이 전체 행과 일치하도록 강제합니다.

공백을 계산하지 않고 "단어 문자"(영숫자)에만 관심이 있는 경우 다음을 사용할 수 있습니다.

grep -cExw '.{7}'

플래그는 일치 -w항목 grep을 "단어"(영숫자가 아닌 문자로 구분된 영숫자 문자열)로 강제합니다.

몇개나 있는지 세어보고 싶다면고유한이 조건을 만족하는 행이 있고(이것이 "다른 행"을 해석하는 방법입니다) 플래그가 grep없는 결과가 및 를 통해 파이프됩니다 . 정확히 7개의 단어 문자를 포함하는 고유한 줄의 수를 계산합니다.-cuniqwc -l

grep -Exw '.{7}' | uniq | wc -l

스크립트에서는 이렇게 됩니다.

grep -Exw '.{7}' "$1" | uniq | wc -l

답변2

perl -l -0777pe '$_ =()= /^.{7}$/gm' "$1"

awk 'length == 7' "$1" | wc -l

sed -Ee '/.{8}/d; /.{7}/!d' "$1" | grep -c .

관련 정보