2017-11-24 15 views
-1

2つのファイルを比較し、一致するものがあれば最初のファイルのみを削除する必要があります。 awkコマンドを使用しましたが、レコードを印刷できましたが、両方のファイルにある最初のファイルからレコードを削除する必要があります。2つのファイルを比較し、一致する場合は最初のファイルのみを削除する必要があります。

コード:

awk 'NR==FNR{a[$0];next}$0 in a{print $0}' File1 File2 

誰もがこの問題を解決するために私を助けてください。

+0

、あなたの質問は完全には明らかではありません。これは次のように言い換えることができます:*最初のファイルから、2番目のファイル*にも存在する行を削除しますか? – user1934428

答えて

0

場合は、小さな変更を必要とすることが

に一致する2つのファイルを比較し、唯一最初のファイルのレコードを削除する必要が

  • を2番目のファイルを読んで最初に保管してくださいアレイa

  • 広告あなたの最初のファイル、行は(レコードがFILE2に存在しないという意味)最初のファイルからのアレイaprint $0

存在しない場合、それはどちらか

awk 'NR==FNR{a[$0];next}!($0 in a){print $0}' File2 File1 

それとも

awk 'NR==FNR{a[$0];next}!($0 in a)' File2 File1 
することができ
+0

レコードを印刷できますが、file2にレコードが存在する場合は、file1からレコードを削除したい –

+0

2番目のファイルにレコードが存在しない場合は、最初のファイルからレコードを出力します –

0

grep + comm液:

サンプルfile1コンテンツ:

111 
222 
a/aa 
333/ 
bb/b 

サンプルfile2コンテンツ:

333/ 
sss 
ccc 
a/aa 
bb/b 
fff 

ジョブ:

grep -vxf <(comm -12 <(sort file1) <(sort file2)) file1 > tmp_f && mv tmp_f file1 

最終file1内容:私にとって

111 
222 
関連する問題