expandコマンド(タブ文字をスペースに置き換える)
形式
expand[-タブリスト][-t タブリスト][パス名 ...]
機能
タブストップでそろえられている行をタブ文字からスペースに置き換えて標準出力に出力します。タブ文字の後ろにバックスペース文字が続いた場合,タブのカラム幅を減らして出力されます。
入力ファイル内の行は,改行文字で区切られたレコードを1つの行と見なします。Windowsでは[CR]+[LF]または[LF]が改行文字と見なされ,UNIXでは[LF]が改行文字と見なされます。なお,UNIXの場合,入力ファイルの各レコードが[CR]+[LF]で区切られていると,変換後の出力行には[CR]が含まれます。
引数
- --tabs=タブリスト
-
タブストップの位置を1以上の整数で指定します。このオプションを指定しない場合,タブストップのデフォルト値である8が適用され,タブストップの位置を1つ指定した場合と同じになります。
タブリストにタブストップの位置を1つ指定する場合と,複数指定する場合の動作は次のとおりです。
- タブストップの位置を1つ指定した場合
-
タブストップごとの文字間隔として使用します。
これによって,1つのタブストップに含まれるタブ文字をスペースへ置き換える際は,指定した文字間隔となるようスペースの数を調整されます。
- タブストップの位置を複数指定した場合
-
タブストップのカラム位置として使用します。カラム位置は0から始まります。
タブストップの位置を複数指定する方法を次に示します。
-
タブリストに,コンマまたはスペースで区切ってタブストップの位置を複数指定する
スペースで区切る場合は,"(ダブルクォーテーション)で囲む必要があります。
これによって,タブストップに含まれるタブ文字をスペースへ置き換える際は,指定したカラム位置となるようスペースの数を調整されます。タブリストで指定された数以降のタブストップの設定が必要な場合は,スペース1つに置き換えられます。
-
タブリストにタブストップの位置を1つ指定し,オプションを複数指定する
-
上記の2つの指定方法を組み合わせて指定する
タブストップは,入力行ごとに最初の指定値から設定されます。タブストップの位置は引数全体で昇順となるよう指定してください。
-
- パス名
-
タブ文字をスペースに置き換えるファイルのパス名を指定します。パス名を指定しないか「-」を指定した場合は,標準入力から入力します。
複数のファイルを指定し,ファイルのどれかでオープンに失敗した場合は, エラーメッセージを出力して継続します。
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
1 |
エラー終了
|
2 |
エラー終了(終了コード1のケースを除く) |
注意事項
-
expandコマンドはテキストファイルを対象としています。バイナリファイルから入力した場合や,バイナリデータに出力した場合は,動作を保証しません。
使用例
- タブストップの位置を1つ指定する場合
-
タブストップを1つ指定した場合,タブストップごとの文字間隔として使用します。
例として,ファイル「file1」のタブストップに6を指定した例を次に示します。
- ファイル「file1」の内容
-
次のファイル内容の「→」はタブ文字を示しています。
----+----+----+----+----+----+----- a001 → a002 → a003 b001 → b002 →→ b003 c001 → c2 → c03
- コマンド実行例
-
タブストップを6とし,ファイルfile1を指定しています。
$ expand -t 6 file1
- 実行結果
----+----+----+----+----+----+----- a001 a002 a003 b001 b002 b003 c001 c2 c03
1行目は指定値6の間隔でタブストップが設定されています。
2行目のb002とb003の間はタブ文字が2つあるため,タブストップが2つ設定されています。
3行目は文字列数が異なるc001,c2,c03がタブストップ間隔6で設定されています。
- タブストップの位置をタブリストで複数指定する場合
-
タブストップを複数指定した場合,指定した順にタブストップが設定されます。指定数を超えてタブストップの設定が必要な場合は,スペース1つと置き換えられます。
- ファイル「file1」の内容
-
次のファイル内容の「→」はタブ文字を示しています。
----+----+----+----+----+----+----- a001 → a002 → a003 → a004
- コマンド実行例1
-
タブリストを6,16とし,ファイルfile1を指定しています。
$ expand -t 6,16 file1
- 実行結果1
----+----+----+----+----+----+----- a001 a002 a003 a004
指定値の桁までスペースを設定して文字列を出力します。
1つ目の指定値は6のため,a001を出力して6桁までスペースを設定し,その後ろにa002を出力しています。
同様にa002を出力したあと,指定値である16桁までスペースを設定しa003を出力しています。
タブリストにはそれ以降の指定値がないため,a003とa004の間にはスペースを1つ置いてa004を出力しています。
- コマンド実行例2
-
タブリストを2,16とし,ファイルfile1を指定しています。
$ expand -t "2 16" file1
- 実行結果2
----+----+----+----+----+----+----- a001 a002 a003 a004
指定値1の値が2のため,a001を出力したあと2桁までスペースを設定しようとしますが,a001を出力した時点で2桁を超えています。そのため,指定値「2」は無視し,次の値である16桁までスペースを設定して,a002を出力しています。
タブリストにはそれ以降の指定値がないため,スペースを1つずつ設定して,その後ろの文字列を設定しています。
- タブストップをオプションで複数指定する場合
-
[-t タブリスト]と[-タブリスト]を組み合わせたタブストップの複数指定には,幾つかの記述方法があります。次の指定例はタブストップを2と16で指定した場合の指定方法で,どの記述方法も同一です。
$ expand -t 2 -t 16 file1 $ expand -t 2 -16 file1 $ expand -2 -t 16 file1 $ expand -2 -16 file1 $ expand -t 2,16 file1 $ expand -2,16 file1
- バックスペースを含んで入力する場合
-
タブ文字の後ろにバックスペース文字が続いた場合,タブのカラム幅を減算して出力されます。
- ファイル「file1」の内容
-
次のファイル内容の「→」はタブ文字を示しています。
a003の直前にバックスペース文字(^H)が存在しています。
----+----+----+----+----+----+----- a001 → a002 → ^Ha003→a004 b001 → b002 → b003 → b004
- コマンド実行例
-
タブストップをデフォルトの8で実行します。
$ expand file1
- 実行結果
----+----+----+----+----+----+----- a001 a002 a003 a004 b001 b002 b003 b004
a003の直前にバックスペース文字があるため,出力時に保存され,結果としてa003の出力桁は17桁ではなく16桁となります。
- 標準入力からの入力の場合
-
パス名を指定しないか「-」を指定する場合は,標準入力からの入力となります。
- ファイル「file1」の内容
-
次のファイル内容の「→」はタブ文字を示しています。
----+----+----+----+----+----+----- a001 → a002 → a003 → a004
- コマンド実行例
-
file1を標準入力から入力しています。
$ expand < file1
または
$ expand - < file1
- 実行結果
----+----+----+----+----+----+----- a001 a002 a003 a004
-
オプションエラーのメッセージを表示します。
このメッセージは,コマンドを実行するプラットフォームによって異なる場合があります。Windowsの例を次に示します。
C:\> expand -z expand: illegal option -- z usage: expand [-tablist] [-t tablist] [file ...]