2017-04-01 12 views
2

私は次のような状況があります。ファイル2にファイル2に含まれている行を、ファイル2にプレフィックスが付いている場合に削除する方法はありますか?

ID1:[email protected] ID2:[email protected] ID3:[email protected] ... 

source.txt IDは、例えば、数字の文字列であるが 1234, 23412, 897 ...(1桁以上)。

exclude.txt

[email protected] 
[email protected] 
[email protected] 
... 

即ちのみメールなしのID。

私は削除されていない行に対してID:emailペアを維持し、exclude.txtに記載された電子メールが含まれている source.txt からすべての行を削除します。

私はLinuxのコマンドラインツール(または必要な場合は単純なbashスクリプト)を使ってどうすればよいですか?

答えて

2

あなたはawkので簡単にそれを行うことができます。grepと

awk -F":" 'NR==FNR{a[$1];next}(!($2 in a))' exclude.txt source.txt 

オルタナティブ:ケアと

grep -v -F -f exclude.txt source.txt 

使用のgrepを、grepの正規表現のマッチングを行いますので、。 grep(単語マッチング)に-wオプションを追加する必要があるかもしれません。

+0

コメントは議論の対象外です。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/139698/discussion-on-answer-by-george-vasiliou-how-to-remove-lines-contained-in-file- 1)。 –

関連する問題