グヌ違い

グヌ違い

aとbという2つのファイルがあります。これら2つのファイルを比較し、ファイル名と3番目のファイルの違いを確認したいと思います。誰でも簡単なコマンドで私を助けることができますか?

答え1

diff a b > differences仕事をしなければなりません。 2つのファイルの違いはファイルに保存されますdifferences

答え2

あなたはそれを使用することができますgrep違いを確認する関数(file3は出力ファイルです):

grep -Fxvf file1 file2 > file3

標識はどこにありますか?

  • -F:PATTERNを改行で区切られた固定文字列のリストとして解釈します。これらのいずれかが一致します。
  • -x:行全体に正確に一致する一致のみを選択します。
  • -v:一致の意味を反転し、一致しない行を選択します。
  • -fFILE:FILEから1行に1つずつパターンを取得します。空のファイルにはパターンが0個含まれているため、一致するものはありません。

フラグの使用-n: 出力の各行の前に入力ファイルの行番号を付けます。

grep -n -Fxvf file1 file2 > file3

答え3

グヌ違い

gnu diffがある場合(diffutilsからdiff (GNU diffutils) 3.3)。

diff --old-line-format='old %L' --new-line-format='new %L' --unchanged-group-format='' u v

old    PV Name                     /dev/dsk/c0t4d0
new    PV Name                     /dev/dsk/c99t4d0

(ファイルにリダイレクトする方法は次のとおりです。)

awkの基本的な違い

デフォルトのdiffでは、awkを使用して '<'と '>'を解析します。

diff u v
178c178
<    PV Name                     /dev/dsk/c0t4d0
---
>    PV Name                     /dev/dsk/c99t4d0

awkを使ってファイル名を入力してください。

 diff u v | awk '$1 == "<" { printf "u: %s\n",$0; next ; } 
            $1 == ">" { printf "v: %s\n",$0 ; next ; } 
            { print;} '

178c178
u: <    PV Name                     /dev/dsk/c0t4d0
---
v: >    PV Name                     /dev/dsk/c99t4d0

(読みやすくするために区切られた行)

それではdiffファイルに保存してください。

diff u v | awk '$1 == "<" { printf "u: %s\n",$0; next ; } $1 == ">" { printf "v: %s\n",$0 ; next ; } { print;} ' > differences

関連情報