aとbという2つのファイルがあります。これら2つのファイルを比較し、ファイル名と3番目のファイルの違いを確認したいと思います。誰でも簡単なコマンドで私を助けることができますか?
答え1
diff a b > differences
仕事をしなければなりません。 2つのファイルの違いはファイルに保存されますdifferences
。
答え2
あなたはそれを使用することができますgrep違いを確認する関数(file3は出力ファイルです):
grep -Fxvf file1 file2 > file3
標識はどこにありますか?
-F
:PATTERNを改行で区切られた固定文字列のリストとして解釈します。これらのいずれかが一致します。-x
:行全体に正確に一致する一致のみを選択します。-v
:一致の意味を反転し、一致しない行を選択します。-f
FILE: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