プロが教えるわが家の防犯対策術!

gawkで、1行に2つのカラムに分けて出力をしようとして、

print "foo", "bar";

と書くと、結果は、
foo bar
というように、foo と bar の間にスペースが何個か入ってしまいました。

この出力を cut -f2 のようにして特定のカラムを取り出したり、Excelに直接貼り付けたり(タブ区切りは貼り付けが便利です)したいので、
スペースでカラムの縦がそろうだけでは意味がなく、タブが入ってほしいのです。

print "foo" "\t" "bar";
と、明示的にタブを指定しても同じ結果でした。

gawkでタブを出力するには、どうすればよいのでしょう?

A 回答 (2件)

printで駄目なら、フォーマット付きのprintfにして


printf("foo\tbar\n");
やら
printf("%s\t%s\n","foo","bar");
という具合にすれば大丈夫じゃないかと思いますが。
書式を整えたいときは多少面倒でも、printfを使う方が手堅いと思いますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/16 23:29

>print "foo" "\t" "bar";



でいいです。もしくは、OFS="\t" しておいて、print "foo","bar"

>と、明示的にタブを指定しても同じ結果でした。

どこかに間違いがあると思いますが、情報が不足しています。bashからの起動だとして、
gawk 'BEGIN{ print "foo" "\t" "bar"}'
でもダメですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

今日やってみたら、うまくいきました。
(もちろん、ご回答いただきました方法でも成功しました)

質問時には、同じスクリプトなのに、何回やっても勝手にスペースに変わってたんですが・・

環境は、Windows用 Gnu Awk (gawk) 2.15, patchlevel 4 + multi-byte extension 1.03 です。
(質問にも書きましたが、Excelといっしょに使いたいので。)

お礼日時:2010/11/16 23:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!