Bashは変数の値をcsvに送信しますか?

Bashは変数の値をcsvに送信しますか?

次のデータがあります。簡単にするために、ここでは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ファイルを生成し、必要に応じてそれを別の文字に変更します。

おすすめ記事