拡張で異なる数の空白文字を使用するのはなぜですか?

拡張で異なる数の空白文字を使用するのはなぜですか?

拡張コマンドが各タブ文字を正確に8つの空白文字に変換しないのはなぜですか?

たとえば、this^Iis^Itabs ^Iタブ文字を表す)

になる:this____is______tabs____ (空白を表示するには下線を追加してください)

変える:this________is________tabs________

私のテストでは、Expandは単語の境界からタブ文字の前にあるすべての文字を取得し、タブ文字を目的のスペース数に変換して合計8文字(該当する単語の境界内の文字を含む)を追加するようです。

なぜそんなことですか?

マニュアルページでは、この動作に関するヒントは提供していません。

ベストアンサー1

このexpandユーティリティは、文字をtab次の暗黙的なタブストップに拡張します。歴史的に、これらの文字はデフォルトで8文字ごとですが、optionsを使用して変更できます-t

printf "%s\t%s\t%s\n" 12345 1234 123
12345   1234    123

printf "%s\t%s\t%s\n" 12345 1234 123 | expand
12345   1234    123

printf "%s\t%s\t%s\n" 12345 1234 123 | expand -t 10
12345     1234      123

printf "%s\t%s\t%s\n" 12345 1234 123 | expand -t 10,16
12345     1234  123

実際に8つのスペースに置き換えるには、次のものをtab使用できますsed

printf "%s\t%s\t%s\n" 12345 1234 123 | sed 's/\t/        /g'

おすすめ記事