BashでTABで区切られた文字列を印刷するには?

BashでTABで区切られた文字列を印刷するには?

タブで区切られた2つの文字列を印刷しようとしています。私は試した:

echo -e 'foo\tbar'
printf '%s\t%s\n' foo bar

両方印刷:

foo     bar

2つの間のスペースは実際には5つのスペースです(Puttyのマウス選択出力に基づいて)。

また、Ctrl + Vを使用してコマンドを入力している間にTabキーを押しても同じ結果が出ました。

出力を選択し、タブを使用して別の場所にコピーできるように強制的にタブに印刷する正しい方法は何ですか?

2番目の質問:Bashがタブをスペースに拡張するのはなぜですか?

修正する:明らかにこれはPuttyの問題です。 https://superuser.com/questions/656838/how-to-make-putty-display-tabs-within-a-file-instead-of-chang-them-to-spaces

ベストアンサー1

2つの間のスペースは実際には5マスです。

いいえ、そうではありません。echoまたはの出力にはありませんprintf

$ echo -e 'foo\tbar' | od -c
0000000   f   o   o  \t   b   a   r  \n
0000010

出力を選択し、タブを使用して別の場所にコピーできるように強制的にタブに印刷する正しい方法は何ですか?

これは別の質問です。これはシェルとは関係ありませんが、出力のタブ文字を空白に変換する端末エミュレータに関連しています。多くの(すべてではありませんが)人々がそうします。

タブ付きの出力をファイルにリダイレクトし、そこからコピーしたり、unexpand出力からスペースをタブに変換したりするのは簡単です。 (空白がタブで始まり、可能であればすべてタブに変換されるという事実もわかりませんが)、これはもちろん出力として実行する必要がある操作によって異なります。

おすすめ記事