btrfsが.btrfsというファイルに配置するbtrfsクリーンアップ統計を解析したいと思います/var/lib/btrfs/scrub.status.<uuid>
。ファイルは実際にはキーと値のペアで構成されています。ここで、キーと値はセミコロンで区切られ、タプルはパイプ("|")文字で区切られます。
scrub status:1
b5872f47-c87e-47ac-b036-4f2725cf6dc6:1|data_extents_scrubbed:4996799|tree_extents_scrubbed:1436139|data_bytes_scrubbed:156663988224|tree_bytes_scrubbed:23529701376|read_errors:0|csum_errors:0|verify_errors:0|no_csum:733729|csum_discards:0|super_errors:0|malloc_errors:0|uncorrectable_errors:0|corrected_errors:0|last_physical:202959224832|t_start:1597847400|t_resumed:0|duration:67|canceled:0|finished:1
最後に、たとえば、各キーと値のペアを別々の行にエクスポートしたいと思います(これはPrometheus指標として使用されます)。
scrub status 1
data_extents_scrubbed 4996799
tree_extents_scrubbed 1436139
[...]
私はsed
この入れ子になった解析を/accomplishing試してみましたが、awk
これまで失敗しました。
これを達成する方法についてのアドバイスをいただきありがとうございます!
ベストアンサー1
すべてのsed:
sed 's/:/ /g;s/|/\ /g' file
GNU sed:
sed 's/:/ /g;s/|/\n/g' file
ここでは、:
スペース|
と改行文字ですべてを変更します。
awkを使用すると、レコード区切り文字をパイプ文字に設定してから:
スペースに置き換えることができます。
awk 'BEGIN{RS="|"}{gsub(":"," ");print}' file