[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.3 unexpand: スペースをタブに変換する

unexpand は、指定された各 file の内容を標準出力に書き出し、 その際に各行の先頭にある複数の空白 (blank) を、必要な数のタブ文字に変換する。 file が指定されていない場合や、file として ‘-’ が指定されている場合は、 標準入力を対象にする。デフォルトの POSIX ロケールでは、空白 (blank) とは、スペースかタブのことである。 他のロケールでは、ほかの空白文字が追加されているかもしれない。

書式:

 
unexpand [option]… [file]…

デフォルトでは、unexpand が変換するのは、各行の行頭にある複数の空白だけである (言い換えれば、空白以外のどんな文字よりも前にある複数の空白だけ)。 バックスペース文字は、出力にそのまま残しておく。バックスペースには、 タブ幅を計算する際に、桁数を減らす働きがあるのだ。 デフォルトでは、タブ位置は 8 桁ごとに置かれる。

このプログラムでは以下のオプションが使用できる。参照: 共通オプション.

-t tab1[,tab2]…
--tabs=tab1[,tab2]…

タブ位置 (tab stop) が一つだけ指定された場合には、 (訳注: 入力行における) タブ位置をデフォルトの 8 桁ごとではなく、tab1 桁ごとに設定する。 それ以外の場合は、タブ位置を tab1, tab2, … 桁目に置き (行頭を 0 桁目として数える)、指定された最後のタブ位置より後ろにある空白は、 変換せず、そのままにする。タブ位置の指定は、コンマで区切ってもよく、空白で区切ってもよい。 このオプションを指定すると、‘-a’ オプションが自動的に設定される。

(訳注: 一例を挙げておく。たとえば、‘-t 8,12’ なら、入力行は、先頭を 0 桁目として、8 桁目、12 桁目にタブ位置があると見なされる。 そこで、先頭に 12 個のスペースがある行に対して unexpand -t 8,12 を行うと、 空白がタブ 2 個に変換される。出力におけるタブ位置はデフォルトのままなので、 出力ではその行は、 0 から数えて 16 桁目から文字が始まることになる。)

互換性を考慮して、GNU の unexpand は、 ‘-tab1[,tab2]…’ という、このオプションの古い書式も認めている。 そちらを使う場合は、タブ位置を必ずコンマで区切らなければならない。 なお、‘-t’ とは違って、この古いオプションは、‘-a’ を自動的に設定しない。新しいスクリプトでは (訳注: 古い書式と同じ動作をさせたい場合)、 古い書式に代えて、‘--first-only -t tab1[,tab2]…’ を使うべきである。

-a
--all

空白の連続が、行の中で空白以外の文字の後ろにある場合でも、 タブ位置の直前にある 2 個以上の空白の連続は、すべて変換する。

終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。


This document was generated on June 7, 2022 using texi2html 1.82.