次のデータがあります。簡単にするために、ここでは2つのサーバーのみを表示します。このサーバーのリストは、変数の値と同様に随時変更されることがあります。
hostname = 'server1'
var1 = 'abc'
var2 = 'xyz'
var3 = 'def'
hostname = 'server7'
var1 = 'ghi'
var2 = 'mno'
var3 = 'jkl'
csv形式で送信できますか?
出力.csv
Hostname Variable Value
server1 var1 abc
server1 var2 xyz
server1 var3 def
server7 var1 ghi
server7 var2 mno
server7 var3 jkl
現在手動で値をコピーしてMs Excelに貼り付けています。このプロセスを自動化したいのですが、まだ実装についてはわかりません。
いくつかのアイデアやサンプルコードを共有していただきありがとうございます。
ベストアンサー1
使用awk
:
awk -F"[=' ]" -v OFS=, '
$1=="hostname"{ hn=$5; next }
!hdr && hn { print "Hostname", "Variable", "Value"; hdr=1 }
NF && hn { print hn, $1, $5 }' infile >output.csv
の場合、および空白文字をフィールド区切り文字として定義する-F"[=' ]"
ため、awkはこれらの区切り文字に基づいて行をフィールドに分割します。=
'
を使用すると、OFS=,
出力はカンマ区切りのフィールドに生成され、単純なcsvファイルを生成し、必要に応じてそれを別の文字に変更します。