特定の列サイズでテキストをラップする方法は?

特定の列サイズでテキストをラップする方法は?

行を80文字の幅で折り返すのと同じ方法を使用できることはわかっていますが、cat test.txt | pr -w 80そうすると印刷された行の上下にスペースが多くなり、一部のシステムでは正しく機能しません。

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

言葉を壊すのを防ぐことができればボーナスポイントです。

答え1

あなたが探している

fold -w 80 -s text.txt
  • -w はテキストの幅を示します。ここで、80は標準幅です。
  • -s は、単語の代わりにスペースで中断するよう指示します。

これは基準しかし、「-w」の代わりに「-c」を要求する他のシステムもあります。

答え2

またfold、一度見てくださいfmtfmtテキストがより見やすくなるようにインテリジェントに改行を選択してみてください。長い単語を分離せずにスペースで囲みます。また、隣接する行を連結します。これは散文には適していますが、ログファイルやその他の書式設定されたテキストには適していません。

答え3

$ cat shxp.txt

O, they have lived long on the alms-basket of words, I marvel thy
master hath not eaten thee for a word; for thou art not so long by the
head as honorificabilitudinitatibus: thou art easier swallowed than a
flap-dragon.

1)固定された線の幅とハイフンを確実にします。

fold -w 20 <shxp.txt

O, they have lived l
ong on the alms-bask
et of words, I marve
l thy master hath no
t eaten thee for a w
ord; for thou art no
t so long by the hea
d as honorificabilit
udinitatibus: thou a
rt easier swallowed
than a flap-dragon.

2)固定線幅と優れたハイフン接続機能を保証します。単語が大きすぎて1行に収まらない場合にのみ単語が破損します。

fold -sw 20 <shxp.txt

O, they have lived
long on the
alms-basket of
words, I marvel thy
master hath not
eaten thee for a
word; for thou art
not so long by the
head as
honorificabilitudini
tatibus: thou art
easier swallowed
than a flap-dragon.

3)ハイフンなしで固定された線幅を約束します。単語が大きすぎて1行に入ることができない場合はそのまま残り、必要以上に大きい行が発生する可能性があります。

fmt -w 20 <shxp.txt

O, they have
lived long on the
alms-basket of
words, I marvel
thy master hath
not eaten thee
for a word; for
thou art not so
long by the head as
honorificabilitudinitatibus:
thou art easier
swallowed than
a flap-dragon.

fmtは異なり、ギザギザの段落行のバランスをとろうとしますfold -s

4)おそらく、これはプログラム内で使用される特別なマークアップ言語と書式設定ユーティリティが原因で問題を解決するための最も複雑な印刷方法ですman。追加のカスタマイズの膨大な可能性:

2>/dev/null nroff <(echo .pl 1 ; echo .ll 20) shxp.txt

O,  they  have lived
long  on  the  alms‐
basket  of  words, I
marvel  thy   master
hath  not eaten thee
for a word; for thou
art  not  so long by
the head as  honori‐
ficabilitudinitati‐
bus: thou art easier
swallowed   than   a
flap‐dragon.

.pl 1 ロープタグはページの高さを 1 行に設定し、ページングを効果的に無効にします。

.ll 20行の長さを20文字に設定します。

タグを別々のファイルに入れると、コマンドが簡素化されます。

$ cat markup.roff
.pl 1
.ll 20
$ 2>/dev/null nroff markup.roff shxp.txt

Unicodeを使用するには、nroff次のようにテキストを事前変換できますpreconv

$ 2>/dev/null nroff markup.roff <(preconv shxp.txt)

答え4

その他の書式設定オプションについては、以下を確認してくださいparhttp://www.nicemice.net/par/

関連情報