2つの列を持つテキストファイルがあり、それをテーブルに変換したいと思います。下の画像は、表ではなく文書に表示されるものと同じです。書式設定は、質問を投稿するときにすべてのテキストを1行に配置することです。
ファイルのデータは次のとおりです。
name: name1
copies: 3
copy1: name1copy1
copy2: name1copy2
copy3: name1copy3
name: name2
copies: 1
copy1: name2copy1
name: name3
copies: 2
copy1: name3copy1
copy2: name3copy2
これが私が得たいものです:
name,copies,copy1,copy2,copy3
name1,3,name1copy1,name1copy2,name1copy3
name2,1,name2copy1,bull,null
name3,2,name3copy1,name3copy2,null
ここからExcelにインポートできます。
答え1
これは多次元配列にGNU awkを使用します。すべてのデータを一度に読み込み、ENDブロックに出力をエクスポートします。これは「script.awk」です
BEGIN {FS = ": "}
!($1 in head) {head[$1] = h++}
$1 == "name" {name = $2}
{data[name][$1] = $2}
END {
PROCINFO["sorted_in"] = "@val_num_asc"
# print the header
sep=""
for (item in head) {
printf "%s%s", sep, item
sep = ","
}
printf "\n"
# print the data
for (name in data) {
sep=""
for (item in head) {
printf "%s%s", sep, data[name][item]
sep = ","
}
printf "\n"
}
}
それから:
$ gawk -f script.awk file
name,copies,copy1,copy2,copy3
name1,3,name1copy1,name1copy2,name1copy3
name2,1,name2copy1,,
name3,2,name3copy1,name3copy2,