diff結果が出たときに列の上部にファイル名を出力する方法があるかどうか疑問に思います。これまでは理解しています。
diff -a --suppress-common-lines -y output_main.txt output_compare.txt
XXX Version X.X(X) | YYY Version Y.Y(Y)
ip address 10.10.88.50 255.255.255.254 | ip address 10.10.89.50 255.255.255.254
うまくいくのは次のとおりです。
diff -a --suppress-common-lines -y output_main.txt output_compare.txt
output_main.txt output_compare.txt
======================== =======================
XXX Version X.X(X) | YYY Version Y.Y(Y)
ip address 10.10.88.50 255.255.255.254 | ip address 10.10.89.50 255.255.255.254
答え1
あなたのリクエストに似た内容があります。
$ diff -c output_main.txt output_compare.txt
*** output_main.txt 2019-11-02 16:46:28.678377910 +0100
--- output_compare.txt 2019-11-02 16:46:27.770423548 +0100
***************
*** 1,2 ****
! XXX Version X.X(X)
! ip address 10.10.88.50 255.255.255.254
--- 1,2 ----
! YYY Version Y.Y(Y)
! ip address 10.10.89.50 255.255.255.254
答え2
少し変ですが、好きなように動作します...
$ diff -a -y --suppress-common-lines <(echo output_main.txt; cat output_main.txt) <(echo output_compare.txt; cat output_compare.txt) | sed 2i=============================================================================
output_main.txt | output_compare.txt
===============================================================================
XXX Version X.X(X) | YYY Version Y.Y(Y)
ip address 10.10.88.50 255.255.255.254 | ip address 10.10.89.50 255.255.255.254
答え3
私は新機能を作ります:
mydiff(){
printf '%.30s%65s\n' "$1" "$2" "================" "===================";
command diff -y "$1" "$2"
}
この値は、65
次の事実に由来します。
'--side-by-side'('-y') オプションは並列形式を選択します。並列出力ラインは2つの入力ラインで構成されているため、出力は通常よりも広いです。通常、130の印刷列は既存のプリンタラインに収まります。
オプションで列の幅を変更できます-W
。
出力:
$ mydiff output_main.txt output_compare.txt
output_main.txt output_compare.txt
================ ===================
XXX Version X.X(X) | YYY Version Y.Y(Y)
ip address 10.10.88.50 255.255.255.254 | ip address 10.10.89.50 255.255.255.254