値を含むいくつかのフィールドを含むファイルがあり、csv
これらの値の組み合わせを印刷したいです(最終的にsql
スクリプトになります)。
AWKを使ってみましたが、結果はありません。
私のファイルの一部csv
:
ATTR_A,2,,
ATTR_B,2,,
ATTR_C,2.5
単一の文字列で属性(列属性以上)のすべての値を印刷したいと思います。
私の最終結果は次のとおりです。
a属性の値は2、b属性の値は2、c属性の値は2.5です。
これにより、次のようにSQLスクリプトに簡単に変換できます。
INSERT INTO `db`.`table` (`attribute_a`, `attribute_b`, `attribute_c`) VALUES ('2', '2', '2.5');
私は次のスクリプトを試しました。
BEGIN {FS=",";}
{
if($1 ~ "ATTR_A")
$va=$2;
if($1 ~ "ATTR_B")
$vb=$2;
}
END { print $va $vb}
しかし、最後の行だけが印刷されます。私は何が間違っていましたか?
ベストアンサー1
awk -F'[,_]' '{ attrs[$2]=$3; };
END{ printf "INSERT INTO db.table (";
for(attr in attrs) { printf ("%s\047attribute_%s\047", sep, attr); sep=", "; };
printf ") VALUES ("; sep="";
for(attr in attrs) { printf ("%s\047%s\047", sep, attrs[attr]); sep=", "; };
print ")";
}' infile
INSERT INTO db.table ('attribute_A', 'attribute_B', 'attribute_C') VALUES ('2', '2', '2.5')