Wie kann ich Text mit einer bestimmten Spaltengröße umbrechen?

142

Ich weiß, dass ich so etwas wie cat test.txt | pr -w 80einen Zeilenumbruch mit einer Breite von 80 Zeichen verwenden kann, aber das bringt viel Platz oben und unten in die gedruckten Zeilen und funktioniert auf einigen Systemen nicht richtig

Wie kann eine Textdatei mit langen Zeilen am besten mit einer bestimmten Breite umbrochen werden?

Bonuspunkte, wenn Sie es davon abhalten können, Worte zu verlieren.

cwd
quelle

Antworten:

177

Du suchst nach

fold -w 80 -s text.txt
  • -w gibt die Breite des Texts an, wobei 80 Standard ist.
  • -s sagt an Leerzeichen und nicht in Worten zu brechen.

Dies ist die Standardmethode , aber es gibt andere Systeme, die "-c" anstelle von "-w" benötigen.

Rainer Bendig
quelle
Funktioniert auch unter OS X, aber Dateiname muss nach args stehen. Vielen Dank!
Rdrey
2
Als Randnotiz verwende ich zum Formatieren von E-Mails für Nur-Text-Antworten:fold -s -w 80 email.txt | sed 's/^.*$/> &/'
Marcello Romani
2
@MarcelloRomani, sollten Sie nicht eine Breite von 78 verwenden, da Sie zwei Zeichen voranstellen?
Kindermädchen
1
Hmm ... ich denke schon. Vielen Dank für den Hinweis :)
Marcello Romani
2
Beachten Sie, dass foldURLs unterbrochen werden, während fmtdies nicht der Fall ist.
Skippy le Grand Gourou
51

Darüber hinaus foldwerfen Sie einen Blick auf fmt. fmtversucht, Zeilenumbrüche intelligent auszuwählen, damit der Text gut aussieht. Es bricht keine langen Wörter, sondern wird nur durch Leerzeichen umbrochen. Es wird auch benachbarte Zeilen verbinden, was gut für Prosa, aber schlecht für Protokolldateien oder anderen formatierten Text ist.

Jonathan
quelle
3
Ich mag besonders fmt -t im Vergleich zu fold
lkraav
15

1) gesicherte feste Linienbreite mit Wortumbruch:

fold -w 80 <text.txt

2) garantierte feste Linienbreite mit außergewöhnlichem Wortumbruch (ein Wort wird nur unterbrochen, wenn es zu groß ist, um in eine Linie zu passen):

fold -sw 80 <text.txt

3) Vielversprechende feste Linienbreite ohne Wortumbruch (wenn das Wort zu groß ist, um in eine Linie zu passen, bleibt es unverändert, so dass einige Linien möglicherweise größer sind, als Sie benötigen):

fmt -w 80 <text.txt
user2683246
quelle
Unterschätzte Antwort. Verfügbar auf den meisten Systemen. Schön.
Merc
11

Ein anderes (weniger bekanntes) Tool, das das tut, was Sie wollen, ist wrapvon GNU Talkfilters :

wrap -w 80 < textfile

Auch (außerhalb des Themas):

aber das bringt viel Platz oben und unten in den gedruckten Zeilen

Hinzufügen -tbeim Aufrufen przum Weglassen von Headern / Trailern:

   -t, --omit-header
          omit page headers and trailers
don_crissti
quelle
5

Weitere Formatierungsoptionen finden Sie unter par: http://www.nicemice.net/par/

sendmoreinfo
quelle
2
Derzeit ist die Website nicht verfügbar, es gibt das Internetarchiv und den Cache von Google. Dies zeigt jedoch, warum es wichtig ist, mehr als nur Links zu veröffentlichen. Sie hätten zumindest die Beispiele aus der offiziellen Dokumentation veröffentlichen können.
Phk
-1
fold -w 100 -s text.txt

hat bei mir funktioniert, da ich jede Zeile auf 100 Zeichen aufteilen muss

Swathipriya Bandar
quelle
1
Was fügt Ihre Antwort hinzu, was die anderen nicht getan haben?
Sheljohn