スキップしてメイン コンテンツに移動

投稿

2月, 2016の投稿を表示しています

awk 一行ではないが、コピペでターミナルで実行できる書き方

こちらはMac版のExcel ファイルからタブ区切りのテキストで保存した場合、 セル内の改行(¥r)を除くサンプルです。 #まずは nkf で UTF-8 に変換する nkf -x saveAsTabSeparated.txt | \ # Excelから吐き出すテキストにセル内のダブルクオーテーションと改行\r を除く gawk ' #ORS:出力改行、FS:入力フィルド区切り、OFS:出力区切り BEGIN{ORS="\n";FS=OFS="\t";content="";} #元々のデータの改行が\rのため、ORS="\n"を指定したことで、沢山なフィルドの一行データになる #gensubでフィルド(Excelのセル)内のダブルクオーテーションと\rを除く {for (i=1;i<=NF;i++) content=content OFS gensub(/\"(.*)\r(.*)\"/," \\1 ","g",$(i))}  END{print content}' | \ #改行を\r から \n に変える gawk ' BEGIN{RS="\r";ORS="\n";FS=OFS="\t"} {content=$1; for (i=2;i<=NF;i++) content= content OFS $(i); print content}' こうすると、一行よりは読みやすくなります。

awk 一行ではないが、コピペでターミナルで実行できる書き方

こちらはMac版のExcel ファイルからタブ区切りのテキストで保存した場合、 セル内の改行(¥r)を除くサンプルです。 #まずは nkf で UTF-8 に変換する nkf -x saveAsTabSeparated.txt | \ # Excelから吐き出すテキストにセル内のダブルクオーテーションと改行\r を除く gawk ' #ORS:出力改行、FS:入力フィルド区切り、OFS:出力区切り BEGIN{ORS="\n";FS=OFS="\t";content="";} #元々のデータの改行が\rのため、ORS="\n"を指定したことで、沢山なフィルドの一行データになる #gensubでフィルド(Excelのセル)内のダブルクオーテーションと\rを除く {for (i=1;i<=NF;i++) content=content OFS gensub(/\"(.*)\r(.*)\"/," \\1 ","g",$(i))}  END{print content}' | \ #改行を\r から \n に変える gawk ' BEGIN{RS="\r";ORS="\n";FS=OFS="\t"} {content=$1; for (i=2;i<=NF;i++) content= content OFS $(i); print content}' こうすると、一行よりは読みやすくなります。