한 줄에 한 문자가 포함된 입력 파일이 있는데 파일에 정확히 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으로 보고됩니다.