このガイドでは、あまり知られていない2つのLinuxコマンド、つまり Expandについて説明します。 および展開解除 実用的な例で。不思議に思う人のために、Expandコマンドはファイル内のTAB文字をSPACE文字に置き換えるために使用され、Unexpandコマンドはその逆を行います。つまり、ファイル内のSPACE文字をTAB文字に置き換えます。実際、MS-DOSには、圧縮ファイルを展開するために使用される「展開」と呼ばれるコマンドもあります。ただし、LinuxのExpandコマンドは、タブをスペースに変換するだけです。これらの2つのコマンドは、 GNU coreutilsの一部です。 David MacKenzieによって書かれました 。
デモンストレーションの目的で、このガイド全体で「ostechnix.txt」という名前のテキストファイルを使用します。
コマンド例の拡張
すでに述べたように、Expandコマンドは、ファイル内のTAB文字をスペース文字に置き換えます。
タブをファイル内のスペース(「ostechnix.txt」など)に変換し、次のコマンドを使用して結果を標準出力に書き込むには:
$ expand ostechnix.txt
結果を標準出力で表示したくない場合は、以下のような別のファイルにアップロードしてください。
$ expand ostechnix.txt>output.txt
標準の入力から読み取って、タブをスペースに変換することもできます。これを行うには、ソースファイル名を指定せずに「expand」コマンドを実行するだけです。
$ expand
テキストを入力してEnterキーを押すだけで、タブがスペースに変換されます。 CTRL + Cを押します やめる。
空白以外のタブを変換したくない場合は、 -iを使用します 以下のようなフラグ。
$ expand -i ostechnix.txt
また、8文字(デフォルト値)ではなく、特定の文字数だけタブを配置することもできます。
$ expand -t=5 ostechnix.txt
以下のようにカンマで区切って複数のタブ位置に言及することもできます。
$ expand -t 5,10,15 ostechnix.txt
または、
$ expand -t "5 10 15" ostechnix.txt
詳細については、manページを参照してください。
$ man expand
非展開コマンドの例
展開しない コマンドは、展開コマンドの反対を実行します。スペース文字をタブ文字に変換します。 Unexpandコマンドの使用方法を学ぶためのいくつかの例を紹介します。
ファイル内の空白(もちろんスペース)をタブに変換し、出力をstdoutに書き込むには、次のようにします。
$ unexpand ostechnix.txt
出力をstdoutに表示するだけでなく、ファイルに書き込みたい場合は、次のコマンドを使用します。
$ unexpand ostechnix.txt>output.txt
空白をタブに変換し、標準出力から読み取ります:
$ unexpand
デフォルトでは、Unexpandコマンドは最初の空白のみを変換します。最初の空白だけでなく、すべての空白を変換する場合は、 -aを使用します フラグ:
$ unexpand -a ostechnix.txt
空白の先頭のシーケンスのみを変換するには( -aをオーバーライドすることに注意してください ):
$ unexpand --first-only ostechnix.txt
8 ではなく、特定の文字数だけタブを配置します ( -aを有効にします ):
$ unexpand -t 5 ostechnix.txt
同様に、以下のようにカンマで区切られた複数のタブ位置について言及できます。
$ unexpand -t 5,10,15 ostechnix.txt
または、
$ unexpand -t "5 10 15" ostechnix.txt
詳細については、manページを参照してください。
$ man unexpand
推奨される読み物:
- 初心者向けの例を含むFoldコマンドチュートリアル
多数のファイルで作業している場合、ExpandおよびUnexpandコマンドは、不要なTAB文字をSPACE文字に、またはその逆に置き換えるのに非常に役立ちます。