2012-04-30 10 views
15

差分を別のファイルに使用して異なる行のみを表示するにはどうすればよいですか?例えばdiff(bash)を使用して異なる行のみを表示する方法

、ファイル番号1の行が含まれていますが起こる以下に作成する方法

1;john;125;3 
1;tom;58;2 
2;jack;10;5 

1;john;125;3 
1;tom;56;2 
2;jack;10;5 

ファイル番号2には、次の行が含まれていますか?

1;tom;58;2 
+0

ためにラインを変え変わらない線や印刷の印刷を抑制することができるグループの書式指定子を使用して、トム; 56; 2 '? 2番目のファイルには常に優先順位を付ける必要がありますか?最初のファイルに2番目のファイルにない行が含まれているとどうなりますか? –

答えて

29

A.TXT:

1;john;125;3 
1;tom;56;2 
2;jack;10;5 

B.TXT:

1;john;125;3 
1;tom;58;2 
2;jack;10;5 

使用comm

comm -13 a.txt b.txt 
1;tom;58;2 

commへのコマンドラインオプションはかなり単純明快です:

-1抑制カラム1(FILE1に固有の線)

-2カラム2(FILE2に固有の行)を抑制

-3カラム3(両方のファイルに現れる線)

を抑制
+0

私は彼がファイル2に固有の行を保持したいと思うと思います。 – codaddict

+0

はい、気づいた - 私は最初のファイルが優先されると思いました。投稿を更新しました –

+3

"commコマンドは、2つのファイルがソートされた順序であることを期待しています。 –

10

あなたが行うことができます2をファイルに独自の行だけを保持したいと仮定すると:

comm -13 file1 file2 

commコマンドは、2つのファイルがソート順であることを前提としています。

3

あなただけの `1に起こるはず何が変わっ

diff --changed-group-format="%>" --unchanged-group-format="" file1 file2

+0

これは<(echo "$ string1")<(echo "$ string2")を使用している文字列にも有効です。 –

関連する問題