2016年2月29日月曜日

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

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

0 件のコメント:

コメントを投稿