1行に1文字の入力ファイルがあり、ファイルに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として報告されます。