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.

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".


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.


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

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

5

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


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


1
Apa jawaban Anda menambahkan bahwa yang lain tidak?
Sheljohn
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.