2017-08-11 6 views
0

私は2つのファイルを持っていますが、2つのファイルを比較して新しい行を取得したいのですが、 'diff newfile oldfile' < "と私が持っていたいと思うdiff情報。例えば、今、私はOLDFILEをlinux shell diff 2つのファイルを使って新しい行を取得する

を持っている:

a 
b 
c 

とNEWFILE

a 
b 
c 
d 
e 
f 

'デフNEWFILE OLDFILE' の結果が

4,6d3 
< d 
< e 
< f 

されますが私が持っていたい結果は

d 
e 
f 

どうすればこの出力を得ることができますか?私は多くのdiffオプションを検索しましたが、アイデアはありません。

ありがとうございます。

+1

の可能性のある重複(https://stackoverflow.com/質問/ 18204904/find-in-one-file-that-not-in-another) –

+0

も参照してください[BashFAQ/036](http://mywiki.wooledge.org/BashFAQ/036): "2つのファイル(交差点を設定する)または2つのファイルのうちの1つのみ(減算を設定する)の両方にあるすべての行を取得するにはどうすればよいですか? –

+0

あなたは "native" diff – RomanPerekhrest

答えて

2

this questionと同様に、この目的でcommを使用できます。

comm -13 file1 file2 

file1には存在しませんfile2の行だけを出力します。

+0

で必要な結果を得ることができます。これは私の問題を解決します。 –

+0

@SakuraKyouko 'comm'は入力ファイルをソートする必要があることを覚えておいてください。 –

0

は、このコマンドを使用します。

diff -u newfile oldfile 

オプション-uunified formatを意味します。

0

また、awkを使用することができますファイルはそれほど大きくない場合は(部分一致を気)

$ awk 'NR==FNR{a[$0];next} ($0 in a==0)' oldfile newfile 
d 
e 
f 

またはgrepを:

$ grep -v -f oldfile newfile 
d 
e 
f 

join(入力ファイルを注文する必要があります):

$ join -v 2 oldfile newfile 
d 
e 
f 
1

ネイティブ差分ソリューション:

diff --changed-group-format='%<' --unchanged-group-format='' new.txt old.txt 

出力:[?他にはない1つのファイルに行を見つけるの高速道]

d 
e 
f 
関連する問題