入力に26文字すべてが含まれていることを確認する方法

入力に26文字すべてが含まれていることを確認する方法

1行に1文字の入力ファイルがあり、ファイルに26文字すべてが含まれていることを確認したいと思います。私はこれがuniq -d反復可能な結果を​​得るのに役立つと思います。しかし、行方不明の文字を見つける方法は?動作しますかgrep

答え1

はい、次のことができますgrep

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

または最新sortjoinシェルを使用してください。

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として報告されます。

関連情報