expandコマンドについて詳しくまとめました 【Linuxコマンド集】

  • このエントリーをはてなブックマークに追加
  • Pocket

expandはタブ区切りテキストファイルのデータを揃えて表示するコマンドだ。

このページではタブ区切りテキストファイルのデータを揃えて表示する方法を解説する。

expandコマンドの基本

コマンドの基本動作

使い方は、次のとおりだ。

$ expand ファイル名

操作説明に入る前に次のコマンドでタブ区切りのテキストファイルを用意する。ぜひ、実際に操作してみよう。

$ echo -e "No-1\tTokyo\t1354098\nNo-2\tOsaka\t934765\nNo-3\tNagoya\t786592" > ex.txt

すると、次のようなテキストファイルが作成される。

expandコマンド

タブ文字で区切られたテキストファイルex.txtの各列のデータを揃えて表示する場合は、次のコマンドだ。

$ expand ex.txt

expandコマンド

タブ文字で区切られたテキストファイルex.txtの各列のデータを揃えて表示の情報を表示した。

ファイル名を入力せずにexpandコマンドのコマンド名だけでも動作する。

$ expand

expandコマンド

この場合、キーボードなどの標準入力からのタブ区切りの入力に対し、各列のデータを揃えて表示する。

expandコマンド

キーボードなどの標準入力からの入力にした場合は、Ctrl+Cのショートカットキーで解除する。

ちなみにオプションなしでは、catコマンドと見た目上、同じで8文字単位で揃う動作に見える。

しかし、catコマンドでファイルに内容を出力したものと、expandコマンドでファイルに出力したものでは、ファイル容量がexpandコマンドの方が多い。

catコマンドではタブ文字は1文字のタブ文字として出力しているが、expandコマンドでは、1文字のタブ文字を各列が揃うように複数の半角空白に置き換えているのだ。

catコマンドの出力結果をファイルex-cat.txt、expandコマンドの出力結果をファイルex-expand.txtとして出力したものをlsコマンドの-lオプションで表示し、ファイル容量、つまり文字数をカウントした。

expandコマンド

catコマンドで変換したファイルの容量は56バイト、expandコマンドで変換したファイルの方が70バイトと大きいことがわかる。

expandコマンドのオプションたち

オプションの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション -t(オプション--tabs)

揃える文字数を指定する

オプション -i(オプション--initial)

行頭のタブ文字のみ変換する。

 -tオプション(--tabsオプション):揃える文字数を指定する

揃える文字数を指定する書式は次のとおりだ。

$ expand -t 文字数 ファイル名

タブ文字で区切られたテキストファイルex.txtの各列のデータを3文字に揃えて表示する場合は、次のコマンドだ。

$ expand -t 3 ex.txt

expandコマンド

タブ文字で区切られたテキストファイルex.txtの各列のデータを3文字に揃えて表示した。

ここで、注目してほしいのは3行目のNagoyaの786592の数値が1、2行目に比べて位置が右にずれている。

次の図は指定した3文字ごとに線を引いたものだ。

expandコマンド

3文字区切りだとTokyoとOsakaは、次の数値までに空白の区切りを入れることができ12文字目から数値が表示できる。

Nagoyaは唯一6文字で次の区切りまで数値との間に空白を入れることができないために、その次の15文字目の区切りまで送られ、数値が配置される。

このように文字数が少ない指定をした場合は、それぞれの列が揃わない場合もあるので注意しよう。

-iオプション(--initialオプション):行頭のタブ文字のみ変換する

プログラムソースなどでは、視認性を良くするために行頭にタブ文字でインデントを入れている場合があり、そのような行頭のタブ文字のみ空白に変換することができる。

-iオプションの説明に入る前に次のコマンドで2行目の行頭にタブ文字が入っているテキストファイルを用意する。ぜひ、実際に操作してみよう。

$ echo -e "for\t(\$i=1;\$i<50;$i++)\t{\n\tfind_target\t(\$i)\t;\n}" > ex2.txt

すると、次のようなテキストファイルが作成される。

expandコマンド

行頭のタブ文字のみ空白に変換するコマンドは次のとおりだ。

$ expand -i ファイル名

タブ文字でインデントされたテキストファイルex2.txtの行頭のタブ文字のみ空白に変換する場合は、次のコマンドだ。

$ expand -i ex2.txt

expandコマンド

行頭の空白を無視しタブ文字で区切られたテキストファイルex.txtの各列のデータを揃えて表示した。

もう少し具体的に把握するために、半角空白を「-」に変換するtrコマンドをパイプし、動作を確認してみよう。

まず、catコマンドでテキストファイルex2.txtを見てみよう。

$ cat ex2.txt | tr " " "-"

expandコマンド

結果、半角空白が入っていないため、「-」の表示はない。

次に、オプションなしのexpandコマンドでテキストファイルex2.txtを見てみよう。

$ expand ex2.txt | tr " " "-"

expandコマンド

結果、すべてのタブ文字が半角空白に変換されたため、タブ文字の部分すべてが「-」に表示された。

最後に、-iオプションを付与したexpandコマンドでテキストファイルex2.txtを見てみよう。

$ expand -i ex2.txt | tr " " "-"

expandコマンド

結果、行頭にタブ文字が入っている2行目のみのタブ文字が半角空白に変換されたため、2行目の行頭のみが「-」に表示された。

expand関連コマンド

最後にexpandコマンドに関連して、基本的なタブ区切りテキストファイルのデータを揃えて表示のコマンドも紹介しておく

unexpandコマンド

空白をタブに変換する

trコマンド

テキストファイル内の文字を置き換える

catコマンド

テキストファイルを縦方向に結合する。

pasteコマンド

テキストファイルを横方向に結合する。

sortコマンド

テキストファイルを並べ替える。

sedコマンド

行を置き換える。

grepコマンド

行を抽出する。

uniqコマンド

重複行を削除する。

まとめ

expandコマンドは様々な応用が利く。

タブ文字で区切られたログなどのデータを、半角空白の固定長で格納されているデータに変換できる。

また、プログラムソースなどの行頭インデントのためのタブを好みの長さの半角空白に一気に変換することもできる。

便利なコマンドなのでぜひ覚えておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*