입력에 26자가 모두 포함되어 있는지 확인하는 방법

입력에 26자가 모두 포함되어 있는지 확인하는 방법

한 줄에 한 문자가 포함된 입력 파일이 있는데 파일에 정확히 26개의 문자가 모두 포함되어 있는지 확인하고 싶습니다. 나는 이것이 uniq -d반복 가능한 결과를 얻는 데 도움이 된다고 생각합니다. 하지만 누락된 문자를 찾는 방법은 무엇입니까? 작동 할까요 grep?

답변1

예, 다음과 같이 할 수 있습니다 grep.

printf %s\\n {a..z} | grep -vf infile

또는 sort/ join및 최신 쉘을 사용하십시오.

sort -u infile | join -v2 - <(printf %s\\n {a..z})

또는 유사하게 다음을 사용하십시오 awk.

awk 'NR==FNR{z[$0]++;next}!($0 in z)' infile <(printf %s\\n {a..z})

답변2

...또는 다음과 같이 사용 comm:

printf %s\\n {a..z} | comm -23 - <(sort infile)

여기서는 "file 1"과 관련된 행을 제외하고 comm의 출력을 억제합니다. 파일 1은 printf알파벳이고, 파일 2는 정렬이 필요한 입력입니다. 파일 2 "infile"에 누락된 문자가 있으면 comm으로 보고됩니다.

관련 정보