拡張コマンドが各タブ文字を正確に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'