sed を使用した出力のソート

sed を使用した出力のソート

実行後、次の結果が出力されます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隣接する行が変更される可能性があるため、通常の出力には機能しません。しかしそれはあなたが尋ねたように質問に答えます。

おすすめ記事