chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

SffAirMakerとSffAirEditorのCSV機能について

SffAirMakerとSffAirEditorって共にCSVエクスポートとインポート機能を持っているのだけど、そのCSVの形式が微妙に違うがために相互に扱えないのが面倒なところ。ぶっちゃけ
SAEで開けないのをSffAirMakerで開く → CSVで吐く → SAEでインポート
でSAEで開こうとしたのに出来なかったことに「がー!」となったので、勢いあまってSffAirMakerのCSVからSAEのCSVにするawkスクリプトを書いた。

#!gawk
#
# sam2sae.awk
#
# SffAirMaker形式のCSVをSffAirEditor形式のCSVに変換する
function trim(str, tmp) {
	tmp = str;
	sub(/^[ \t]+/, "", tmp);
	sub(/[ \t]+$/, "", tmp);
	return tmp;
}

BEGIN {
	FS=",";
}

{
	shared = 0;
	if (trim($5) == "0") {
		shared = 1;
	} else {
		shared = 0;
	}
	printf("\"%s.%s\",%s,%s,%s,%s,%d\n", trim($6), trim($7), trim($1), trim($2), trim($3), trim($4), shared);
}
追記 逆向き (SffAirEditor → SffAirMaker) も作った

こっちのほうが面倒だった

#!gawk
#
# sae2sam.awk
#
# SffAirEditor形式のCSVをSffAirMaker形式のCSVに変換する
function trim(str, tmp) {
	tmp = str;
	sub(/^[ \t]+/, "", tmp);
	sub(/[ \t]+$/, "", tmp);
	return tmp;
}

BEGIN {
	FS=",";
}

{
	shared = 0;
	if (trim($6) == "0") {
		shared = 1;
	} else {
		shared = 0;
	}
	filename = trim($1);
	sub(/^\"+/, "", filename);
	sub(/\"+$/, "", filename);
	split(filename, filenames, ".");
	printf("%s, %s, %s, %s, %d, %s, %s\n", trim($2), trim($3), trim($4), trim($5), shared, filenames[1], filenames[2]);
}