web-dev-qa-db-ja.com

2つのファイルを比較し、違いを出力します

私はdiffとループの使用を知っていますが、diffで必要なものを実際に取得できないようです。私は基本的に2つのファイル(file2.txtとfile2.txt)を比較し、それらの間に欠落しているものの出力を取得しようとしています。

目的1:file1.txtからfile2.txtに欠けているものを見つける

目的2:どちらかのファイルに何が欠けているかを見つけます。 file1.txtにない行がfile2.txtに存在する場合があります。それらについても知りたいのですが。

diffは、2つのファイルが同じものではなく、違いを1行ずつ比較していることを示しているだけです。私が必要としているのは、ファイルを調べ、行で区別しないプログラムです。 '/ bin/mount'を含む行がfile1.txtの2行目にあり、file2.txtの59行目にある場合、それについて知る必要はありません。全体として何がないのか知りたいだけです。これはできますか?

2
unixpipe

行の順序を気にしない場合は、最初にファイルを並べ替えます。どのファイルでどの行が欠落しているかを確認するには、commの代わりにdiffを使用します。

comm <(sort file1) <(sort file2)
5
choroba

目的1:file1.txtからfile2.txtに欠けているものを見つける

grepの場合:

grep -xvFf file2.txt file1.txt

commの場合:

comm -13 <(sort file1.txt) <(sort file2.txt)

sortおよびuniqの場合:

sort file2.txt file2.txt file1.txt | uniq -u

目的2:どちらかのファイルに何が欠けているかを見つけます。 file1.txtにない行がfile2.txtに存在する場合があります。それらについても知りたいのですが。

grepの場合:

grep -xvFf file1.txt file2.txt; grep -xvFf file2.txt file1.txt

commの場合:

comm -3 <(sort file1.txt) <(sort file2.txt) | tr -d '\t'

sortおよびuniqの場合:

sort file1.txt file2.txt | uniq -u
3
cuonglm