post by yamamoto | 0 | 413 views

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}'

 

こうすると、一行よりは読みやすくなります。

Comments are closed.