![2つのファイルの一致行[重複]](https://linux33.com/image/79662/2%E3%81%A4%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%B8%80%E8%87%B4%E8%A1%8C%5B%E9%87%8D%E8%A4%87%5D.png)
2つのファイルfile1
とfile2
。
file1
:
passd:xxx
hopla:alli
gnar:gungg
araf:utap
file2
:
alli
utap
file2のどの行/単語がファイルと一致するかどうかを確認できますか?実際、おそらくawkを使用してこれを実行できますがcomm -1 -2 file1 file2
、awkを使用してこれを実行できますか?
答え1
awkを使用すると、@jasonwryanが提案したものから始めることができます。2つのファイルを比較してください...
しかし、必要に応じて修正してください。コマンドラインで実行できるアクションとその結果は次のとおりです。
$ awk -F: 'FNR==NR {arr[$0];next} $2 in arr' file2 file1
hopla:alli
araf:utap
file2
検索する単語を含むリストを指定しました。file1
検索する大容量テキストファイル。-F:
区切り文字をコロンとして指定:
$2
この例では、一致させるフィールドはfile1
フィールド 2 であるためです。- 一致するものが発生した場合、デフォルトのジョブはその行を印刷するため、2つの一致する行が表示されます。
追加情報
- ウィキペディア2つのファイルの比較はい。
答え2
grepに問題がある場合
dos2unix file1 file2
grepの動作を妨げる可能性がある問題のあるUnix以外の形式を事前に削除してみてください。- @drewbennが述べたように、
grep -f file2 file1
これにより、一致する行が正常に表示されます。
hopla:alli
araf:utap
答え3
このコマンドは、次のことを行うのに役立ちます。
cat file1 | awk '{FS=":" print $0}' | xargs grep file2
diffコマンドが役に立つかどうかわかりません。ただし、インストールする場合は次のように使用します。diff file1 file2