• 締切済み

gawkでのタブ出力

gawkで、1行に2つのカラムに分けて出力をしようとして、 print "foo", "bar"; と書くと、結果は、 foo bar というように、foo と bar の間にスペースが何個か入ってしまいました。 この出力を cut -f2 のようにして特定のカラムを取り出したり、Excelに直接貼り付けたり(タブ区切りは貼り付けが便利です)したいので、 スペースでカラムの縦がそろうだけでは意味がなく、タブが入ってほしいのです。 print "foo" "\t" "bar"; と、明示的にタブを指定しても同じ結果でした。 gawkでタブを出力するには、どうすればよいのでしょう?

みんなの回答

回答No.2

printで駄目なら、フォーマット付きのprintfにして printf("foo\tbar\n"); やら printf("%s\t%s\n","foo","bar"); という具合にすれば大丈夫じゃないかと思いますが。 書式を整えたいときは多少面倒でも、printfを使う方が手堅いと思いますよ。

toshi1112
質問者

お礼

ご回答ありがとうございます。 万能ですね。 うまくいきました。

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.1

>print "foo" "\t" "bar"; でいいです。もしくは、OFS="\t" しておいて、print "foo","bar" >と、明示的にタブを指定しても同じ結果でした。 どこかに間違いがあると思いますが、情報が不足しています。bashからの起動だとして、 gawk 'BEGIN{ print "foo" "\t" "bar"}' でもダメですか?

toshi1112
質問者

お礼

ご回答ありがとうございます。 今日やってみたら、うまくいきました。 (もちろん、ご回答いただきました方法でも成功しました) 質問時には、同じスクリプトなのに、何回やっても勝手にスペースに変わってたんですが・・ 環境は、Windows用 Gnu Awk (gawk) 2.15, patchlevel 4 + multi-byte extension 1.03 です。 (質問にも書きましたが、Excelといっしょに使いたいので。)

関連するQ&A