Amazonのec2コマンドラインツールを使用してec2スナップショットのリストを要求します。
ec2-describe-snapshots -H --hide-tags > snapshots.csv
データは次のとおりです。
SnapshotId VolumeId StartTime OwnerId VolumeSize Description
snap-00b66464 vol-b99a38d0 2012-01-05 5098939 160 my backup
データを次にリダイレクトする前にどのように傍受できますかsnapshots.csv
?
- 「タブ」をカンマに置き換えます
- 値を引用符で囲みます。
- 値がすべて数値の場合、プレフィックスを付けると
=
Excelはそれをテキストとして扱います。たとえば、OwnerId
「"=5098939
(インラインで実行できない場合は、このプレフィックスは必要なく、スクリプトファイルが必要です。)または代わりに機能)
希望の出力:
"SnapshotId","VolumeId","StartTime","OwnerId","VolumeSize","Description"
"snap-00b66464","vol-b99a38d0","2012-01-05","=5098939","=160","my backup"
ベストアンサー1
#!/usr/bin/awk -f
BEGIN { FS = "\t"; OFS = "," }
{
for(i = 1; i <= NF; i++) {
if ($i + 0 == $i) { $i = "=" $i }
else gsub(/"/, "\"\"", $i);
$i = "\"" $i "\""
}
print
}
この名前を指定すると、convert.awk
次のいずれかを使用して呼び出すことができます。
ec2-describe-snapshots -H --hide-tags | awk -f convert.awk > snapshots.csv
または(実行権限を追加した後chmod a+x convert.awk
)
ec2-describe-snapshots -H --hide-tags | ./convert.awk > snapshots.csv
これにより、各タブに対して新しい列が作成され、コメント列が一緒に配置されますが(タブが含まれていない場合)、空の列が追加されます(例の出力が同じであるため、必要になる場合があります)。すべてのスペースを分割するには(テーブルの追加タブは折りたたまれますが、説明の各単語は新しい列として表示されます)、そのFS="\t";
文を削除してください。
"
子孫のためにsまたはs、または埋め込みスペースを望まない場合は、=
1行にすることができます。
awk -v OFS=, '{$1=$1;print}'