実行後、次の結果が出力されますdiff
。
< #R1#Number = Gauge32: 258 Name = STRING: "TATA"
---
> #R1#Number = Gauge32: 280 Name = STRING: "TATA"
次の出力を得るには、シェルスクリプトでsedコマンドを実装する必要があります。
Hostname=R1; old=258 new=280, Name="TATA"
ベストアンサー1
この試み:
diff ... | sed -n -e '
/^< / h
/^---/ H
/^> / { H; x; s/\n//g;
s/^< #\([^#][^#]*\)#Number = Gauge32: \([0-9][0-9]*\) .* #\1#Number = Gauge32: \([0-9][0-9]*\) .* Name = STRING: \("[^"]*"\).*/Hostname=\1; old=\2 new=\3, Name=\4/;
p; }'
すべてを一行に配置し、興味深いものだけを選択するのがアイデアです。
詳細:
sed -n
- 基本的に何も印刷しない/^< / h
- 出発線を<
予約されたスペースにコピーしてください。/^---/ H
---
- 予約済みスペースに次の行を追加します。/^> / { ... }
->
次から始まる行の場合:H
- 予約済みスペースに行を追加x
- 保有空間とパターン空間を交換s/\n//g
- 改行文字を削除すると、パターンスペースに次の内容が含まれます。< #R1#Number = Gauge32: 258 Name = STRING: "TATA"---> #R1#Number = Gauge32: 280 Name = STRING: "TATA"
s/.../.../
- フォーマットされた出力(ここには特別な内容はありません。ただsed
-fu)p
- 印刷
diff
隣接する行が変更される可能性があるため、通常の出力には機能しません。しかしそれはあなたが尋ねたように質問に答えます。