unexpandコマンドは、スペースをタブに変換することができます。
このunexpandコマンドとは逆のexpandコマンドもあります。
これらのコマンドは、ソースファイルの内容でスペースかタブかを統一するときに使うことができます。
目次
unexpandコマンドとは
unexpandコマンドとは、スペースをタブに変換するコマンドです。
expandコマンドの逆のコマンドで、どのくらいのスペースをタブに変換するかはタブストップ幅で決定します。
unexpandコマンドの利用例
タブストップ幅が8で行頭のスペースをタブに変換
(オプションなし)
unexpandコマンドはデフォルトでは、行頭のスペースのみをタブストップ幅が8で、タブに変換することができます。
コマンド例
1 |
unexpand hello.c |
hello.c
1 2 3 4 5 6 7 8 9 |
#include <stdio.h> int main(void){ str = "helloworld\n"; if(true){ printf(str); } return 0; } |
実行結果
1 2 3 4 5 6 7 8 9 |
#include <stdio.h> int main(void){ str = "helloworld\n"; if(true){ printf(str); } return 0; } |
分かりにくいですが、スペースがタブに変換されています。コマンドの確認方法として、cat -Tでの確認やエディタなどの検索機能でタブ文字になっているかを確認してもよいでしょう。
すべてのスペースをタブに変換
(-aオプション)
-aオプションは、すべてのスペースをタブストップ幅が8で、タブに変換することができます。
コマンド例
1 |
unexpand -a spacefile.txt |
spacefile.txt
1 2 3 4 |
one one one two two two three three three four four four |
実行結果
1 2 3 4 |
one one one two two two three three three four four four |
ページの表示上の都合でタブ文字での表示がきれいな表示にならないかもしれません。ご了承ください。
タブストップ幅を変更
(-tオプション)
-tオプションを用いることで、どのくらいのスペースをタブに変更するかのタブストップ幅を変更することができます。
また、-tオプションは、暗黙的に-aオプションがONになることに注意が必要です。
コマンド例
1 |
unexpand -t4 spacefile.txt |
実行結果
1 2 3 4 |
one one one two two two three three three four four four |
行頭のスペースのみをタブに変換
(--first-only)
--first-onlyは、行頭のスペースのみをタブに変換します。
また、--first-onlyは、-aオプションより優先されます。
つまり、-tオプションでONになった-aオプションをOFFにすることができます。
コマンド例
1 |
unexpand --first-only -t4 hello.c |
実行結果
1 2 3 4 5 6 7 8 9 |
#include <stdio.h> int main(void){ str = "helloworld\n"; if(true){ printf(str); } return 0; } |