2011年10月21日金曜日

コマンド置換でタブが消える


Korn shellでのコマンド置換をしていた。
タブ区切りのファイルの一行目だけを変数に代入しようと

hoge=`head -1 tab_file`

として無事格納。
なんだけど、その後の処理で、どうも躓く。

保存されている文字列は
aaa bbbb cc
というような形で当然、これがタブ区切りになっているはず。

しかし、
$ echo $hoge | cat -t
とやると
aaa bbbb cc
となるだけ…。

本来、タブ区切りになっていれば
aaa^Ibbbb^Icc
とタブの部分が「^I」になるはず…。

念のため、od -xコマンドでダンプをしてみると、やはりタブ(0x09)ではなくスペース(0x20)になっている。

$ echo $hoge | od -x
0000000 6161 61
20 6262 6262 2063 630a
0000014
$ head -1 tab_file | od -x
0000000 6161 61
09 6262 6262 0963 630a
0000014

headが悪いのかと思い、awkやperlで一行目だけ取ってみたが結果は同様。
「シェルの問題?」と思い、zshに変えたら、うまく行った。

% echo $hoge | cat -t
aaa^Ibbbb^Icc

とりあえずなんとかなったけど、それしかないのかなぁ…?
どなたか何か知ってたら教えてください!!

0 件のコメント: