【 fold 】コマンド――テキストを指定した幅で改行して出力するLinux基本コマンドTips(165)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、テキストファイルなどを指定した幅で改行して出力する「fold」コマンドです。

» 2017年12月07日 05時00分 公開
[西村めぐみ@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、テキストファイルなどを指定した幅で改行して出力する「fold」コマンドです。

foldコマンドとは?

 「fold」コマンドは、テキストファイルなどを読み込み、指定した幅で改行して出力するコマンドです。行単位で処理を施します。



foldコマンドの書式

fold [オプション] ファイル1 ファイル2 ……

※[ ]は省略可能な引数を示しています。




foldの主なオプション

短いオプション 長いオプション 意味
-b --bytes バイト数で数える(タブを考慮しない)
-s --spaces 空白の位置で折り返す
-w 幅 --width=幅 折り返す幅を指定する(1以上、デフォルトは80、「-80」のような指定も可能)


テキストファイルを指定した幅で改行して出力する

 「fold -w 幅 ファイル」で、テキストファイルを指定した幅に改行しながら出力します。指定した幅よりも小さい行は変更せず、そのまま出力します。

 ファイルは複数指定可能で、省略した場合は標準入力となります。幅を指定する際、「-40」のように、「-w」を省略して「-幅」と指定できます。

コマンド実行例

fold ファイル

(ファイルを半角80文字分の幅で改行して出力)

fold -40 ファイル

(ファイルを半角40文字分の幅で改行して出力)(画面1


 画面1では、改行の様子を分かりやすくするため、端末の幅を「82」にして出力しています。

画面1 画面1 指定した幅(40文字)でテキストを改行したところ


空白を考慮して改行する

 「-s」オプションを付けると、空白を考慮して改行します。英文やコマンドの出力をfoldコマンドで改行する場合、空白を考慮した方が読みやすくなるでしょう ※1。

※1 「-s」オプションを指定すると、例えば英単語の途中に改行が入ることを回避できる。改行位置は指定した幅(行末)に最も近い空白。ただし、指定した幅よりも長い単語がテキストに含まれていた場合は、単語の途中でも改行する。



コマンド実行例

fold -s ファイル

(ファイルを半角80文字分の幅で、空白を考慮して改行して出力)

fold -s -40 ファイル

(ファイルを半角40文字分の幅で、空白を考慮して改行して出力)


 画面2ではiostatコマンドを「-x」オプション付きで出力しています。「-x」はI/Oデバイスの拡張情報を表示するというオプションです。項目数が多いため実行例の1行は121文字となっています。

 画面2では、改行の様子を分かりやすくするため、端末の幅を「82」にして出力しています。

画面2 画面2 空白を考慮しなかった場合と考慮した場合の処理結果の違い


幅ではなくバイト数を指定して改行する

 幅の代わりにバイト数で改行を指定したい場合は「-b」オプションを使います。「-b」を指定すると、例えばタブも1バイトとしてカウントされます。

 画面3では、「1001〜1020」の範囲の整数をタブ区切りで出力したテキストファイルを使って違いを示しました ※2。「-b」オプションを指定しない場合と指定した場合の動作の違いが分かります。

※2 「seq 1001 1020 | tr "\n" "\t" | sed "s/$/\n/" > tabsample.txt」で作成。seqコマンドで1001から1020を出力し、trコマンドで改行をタブに変換し、sedコマンドで末尾に改行を入れている。



コマンド実行例

fold -b ファイル

(ファイルを80バイトで改行)

fold -b -40 ファイル

(ファイルを40バイトで改行)(画面3


画面3 画面3 幅で改行した場合とバイト数で改行した場合の違い


タブ幅を変更する

 foldコマンドは、使用している端末のタブ幅(通常は8文字)を使用してテキストを整形します。

 タブ幅を変更したい場合はexpandコマンドを使用します。例えば画面4では、先ほどと同じファイルをタブ幅10で空白文字に置き換えてから40バイトで改行しています。

 実行例の2つ目では、catコマンドの「-E」オプションで、行末に「$」記号を付けることで、どの位置で改行しているかを確認しやすくしています。

画面4 画面4 expandコマンドと組み合わせてタブ幅を変更したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。