Bagaimana saya bisa membungkus teks pada ukuran kolom tertentu?

142

Saya tahu bahwa saya dapat menggunakan sesuatu seperti cat test.txt | pr -w 80membungkus garis hingga 80 karakter, tetapi itu menempatkan banyak ruang di bagian atas dan bawah dari garis yang dicetak dan itu tidak berfungsi dengan baik pada beberapa sistem

Apa cara terbaik untuk memaksa file teks dengan garis panjang untuk dibungkus dengan lebar tertentu?

Poin bonus jika Anda dapat mencegahnya melanggar kata-kata.

cwd
sumber

Jawaban:

177

Anda sedang mencari

fold -w 80 -s text.txt
  • -w memberitahu lebar teks, di mana 80 adalah standar.
  • -s memberitahu untuk istirahat di spasi, dan tidak dalam kata-kata.

Ini adalah cara standar , tetapi ada sistem lain, yang membutuhkan "-c" bukan "-w".

Rainer Bendig
sumber
Bekerja pada OS X, juga, tetapi nama file harus setelah argumen. Terima kasih!
rdrey
2
Sebagai catatan, untuk memformat email dengan baik hanya untuk jawaban teks, saya menggunakan:fold -s -w 80 email.txt | sed 's/^.*$/> &/'
Marcello Romani
2
@MarcelloRomani, bukankah seharusnya Anda menggunakan lebar 78 karena Anda menambahkan dua karakter?
pengasuh
1
Hmm ... kurasa begitu. Terima kasih telah menunjukkannya :)
Marcello Romani
2
Perhatikan bahwa foldmemecah url, sementara fmttidak.
Skippy le Grand Gourou
51

Selain itu fold, lihatlah fmt. fmtmencoba memilih jeda baris secara cerdas untuk membuat teks terlihat bagus. Itu tidak melanggar kata-kata panjang, melainkan hanya membungkus spasi. Ini juga akan bergabung dengan baris yang berdekatan, yang baik untuk prosa tetapi buruk untuk file log atau teks yang diformat lainnya.

Jonathan
sumber
3
Saya terutama suka fmt -t dibandingkan dengan lipatan
lkraav
15

1) lebar saluran tetap terjamin dengan pemecahan kata:

fold -w 80 <text.txt

2) meyakinkan lebar saluran tetap dengan pemecah kata yang luar biasa (sebuah kata akan rusak hanya jika terlalu besar untuk masuk dalam satu baris):

fold -sw 80 <text.txt

3) menjanjikan lebar saluran tetap tanpa melanggar kata (jika kata terlalu besar untuk masuk dalam satu baris, masih tetap seperti itu, jadi akhirnya beberapa baris mungkin lebih besar ukurannya daripada yang Anda butuhkan):

fmt -w 80 <text.txt
pengguna2683246
sumber
Jawaban yang diremehkan. Tersedia di sebagian besar sistem. Bagus
Merc
11

Alat lain (kurang dikenal) yang melakukan apa yang Anda inginkan adalah wrapdari GNU Talkfilters :

wrap -w 80 < textfile

Juga (di luar topik):

tapi itu menempatkan banyak ruang di bagian atas dan bawah dari garis yang dicetak

tambahkan -tketika memohon pruntuk menghilangkan header / trailer:

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

Dan untuk opsi pemformatan lainnya, lihat par- http://www.nicemice.net/par/

sendmoreinfo
sumber
2
Saat ini situs web sedang down, ada Internet Archive dan Google cache tetapi tetap ini menunjukkan mengapa penting untuk memposting lebih dari sekadar tautan, Anda setidaknya bisa memposting contoh-contoh dari dokumentasi resmi.
phk
-1
fold -w 100 -s text.txt

bekerja untuk saya karena saya perlu membagi setiap baris hingga 100 karakter

Swathipriya Bandar
sumber
1
Apa jawaban Anda menambahkan bahwa yang lain tidak?
Sheljohn