特定の列サイズでテキストを折り返すにはどうすればよいですか?


142

私はcat test.txt | pr -w 80行を80文字幅に折り返すようなものを使用できることを知っていますが、それは印刷された行の上部と下部に多くのスペースを置き、一部のシステムでは正しく動作しません

長い行を含むテキストファイルを特定の幅で折り返すようにするための最良の方法は何ですか?

単語を壊さないようにすることができればボーナスポイント。

回答:


177

あなたは探している

fold -w 80 -s text.txt
  • -wは、テキストの幅を示します。80が標準です。
  • -sは、単語ではなくスペースで区切るように指示します。

これは標準的な方法ですが、「-w」の代わりに「-c」を必要とする他のシステムがあります。


OS Xでも動作しますが、ファイル名は引数の後に指定する必要があります。ありがとう!
rdrey 14

2
サイドノートでは、うまくテキストのみの返信用の電子メールをフォーマットするために、私が使用:fold -s -w 80 email.txt | sed 's/^.*$/> &/'
マルチェロ・ロマーニ

2
@ MarcelloRomani、2文字を追加するので幅78を使用するべきではありませんか?
ナニー

1
うーん…そうですね。それを指摘してくれてありがとう:)
マルチェロロマーニ

2
foldURLは中断しますが、中断fmtしないことに注意してください。
スキッピールグラングロウ

51

に加えてfold、を見てくださいfmtfmtテキストを適切に表示するために、改行をインテリジェントに選択しようとします。長い単語を分割するのではなく、スペースで囲むだけです。また、隣接する行を結合します。これは、散文には適していますが、ログファイルやその他の書式設定されたテキストには適していません。


3
私は特にフォールドと比較してfmt -tが好きです
lkraav

15

1)ワードブレークを使用した固定行幅の保証:

fold -w 80 <text.txt

2)異常な単語分割を伴う固定行幅の確保(単語が大きすぎて行に収まらない場合にのみ単語が分割されます):

fold -sw 80 <text.txt

3)単語分割なしの固定行幅の約束(単語が大きすぎて行に収まらない場合は、そのまま残されるため、最終的にいくつかの行のサイズが必要以上に大きくなる場合があります):

fmt -w 80 <text.txt

過小評価された答え。ほとんどのシステムで利用できます。良いですね。
Merc

11

あなたがしたいことをする別の(あまり知られていない)ツールはwrapGNU Talkfiltersからです

wrap -w 80 < textfile

また(トピック外):

しかし、それは印刷された行の上部と下部に多くのスペースを置きます

ヘッダー/トレーラーを省略するため-tに呼び出すときに追加しprます。

   -t, --omit-header
          omit page headers and trailers

5

そして、より多くの書式設定オプションのために、見てpar- http://www.nicemice.net/par/


2
現在、Webサイトはダウンしています。インターネットアーカイブとGoogleのキャッシュがありますが、リンクだけではなく投稿することが重要である理由を示しています。少なくとも公式ドキュメントから例を投稿できたはずです。
phk 16

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.