- 締切済み
gawkでのタブ出力
gawkで、1行に2つのカラムに分けて出力をしようとして、 print "foo", "bar"; と書くと、結果は、 foo bar というように、foo と bar の間にスペースが何個か入ってしまいました。 この出力を cut -f2 のようにして特定のカラムを取り出したり、Excelに直接貼り付けたり(タブ区切りは貼り付けが便利です)したいので、 スペースでカラムの縦がそろうだけでは意味がなく、タブが入ってほしいのです。 print "foo" "\t" "bar"; と、明示的にタブを指定しても同じ結果でした。 gawkでタブを出力するには、どうすればよいのでしょう?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- maccha_neko
- ベストアンサー率33% (465/1379)
printで駄目なら、フォーマット付きのprintfにして printf("foo\tbar\n"); やら printf("%s\t%s\n","foo","bar"); という具合にすれば大丈夫じゃないかと思いますが。 書式を整えたいときは多少面倒でも、printfを使う方が手堅いと思いますよ。
- notnot
- ベストアンサー率47% (4901/10362)
>print "foo" "\t" "bar"; でいいです。もしくは、OFS="\t" しておいて、print "foo","bar" >と、明示的にタブを指定しても同じ結果でした。 どこかに間違いがあると思いますが、情報が不足しています。bashからの起動だとして、 gawk 'BEGIN{ print "foo" "\t" "bar"}' でもダメですか?
お礼
ご回答ありがとうございます。 今日やってみたら、うまくいきました。 (もちろん、ご回答いただきました方法でも成功しました) 質問時には、同じスクリプトなのに、何回やっても勝手にスペースに変わってたんですが・・ 環境は、Windows用 Gnu Awk (gawk) 2.15, patchlevel 4 + multi-byte extension 1.03 です。 (質問にも書きましたが、Excelといっしょに使いたいので。)
お礼
ご回答ありがとうございます。 万能ですね。 うまくいきました。