Metni belirli bir sütun boyutunda nasıl sarabilirim?


142

cat test.txt | pr -w 80Satırları 80 karakter genişliğinde sarmak gibi bir şey kullanabileceğimi biliyorum , ancak bu, yazdırılan satırların üstüne ve altına çok fazla alan koyuyor ve bazı sistemlerde düzgün çalışmıyor

Bir metin dosyasını uzun çizgilerle belli bir genişliğe sarılmaya zorlamanın en iyi yolu nedir?

Bonus puanları kırmaktan alıkoyamazsanız bonus puan.

Yanıtlar:


177

Sen arıyorsun

fold -w 80 -s text.txt
  • -w, 80'in standart olduğu metnin genişliğini söyler.
  • -s kelimelerde değil boşluklarda kırılmayı söyler.

Bu standart yoldur, ancak "-w" yerine "-c" gerektiren başka sistemler de vardır.


OS X üzerinde de çalışır, ancak dosya adının argümanlardan sonra olması gerekir. Teşekkürler!
rdrey

2
Bir yandan notta, sadece metin yanıtı için e-postaları güzel bir şekilde biçimlendirmek için kullanıyorum:fold -s -w 80 email.txt | sed 's/^.*$/> &/'
Marcello Romani

2
@MarcelloRomani, iki karakter hazırladığınızdan beri 78 genişliğini kullanmamalı mıydınız?
dadı

1
Hmm ... Sanırım öyle. Buna dikkat çektiğin için teşekkürler :)
Marcello Romani

2
Not foldederken, URL'ler kırar fmtdeğildir.
Skippy le Grand Gourou

51

Ek olarak fold, bir göz atın fmt. fmtmetnin iyi görünmesi için satır sonlarını akıllıca seçmeye çalışır. Uzun laflar kırmaz, sadece boşluklarla sarılır. Ayrıca, yazım dosyaları veya diğer biçimli metinler için iyi olan ancak nesir için iyi olan bitişik satırları birleştirir.


3
Ben özellikle fmt
-t'yi

15

1) kelime kırma ile sabit çizgi genişliği güvence verdi:

fold -w 80 <text.txt

2) olağanüstü kelime kesilmesiyle sabit bir çizgi genişliği sağladı (bir kelime yalnızca bir satıra sığmayacak kadar büyükse kırılır):

fold -sw 80 <text.txt

3) herhangi bir kelime kopması olmadan sabit bir çizgi genişliği vaat ediyor (kelime bir satıra sığmayacak kadar büyükse, hala olduğu gibi bırakılır, bu nedenle nihayet bazı çizgiler ihtiyaç duyduğunuzdan daha büyük olabilir):

fmt -w 80 <text.txt

Yetersiz cevap. Çoğu sistemde bulunur. Güzel.
Merc

11

İstediğinizi yapan başka (daha az bilinen) bir araç da wrapGNU Talkfilters’tır :

wrap -w 80 < textfile

Ayrıca (konu dışı):

ancak bu, yazdırılan çizgilerin üstüne ve altına çok fazla alan koyar

başlıkları / römorkları atlamak için -tçağırırken ekle pr:

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

5

Ve daha fazla biçimlendirme seçeneği için bkz. par- http://www.nicemice.net/par/


2
Şu anda web sitesi kapalı, İnternet Arşivi ve Google’ın önbelleği var ancak yine de bu, sadece bağlantılardan daha fazlasını göndermenin neden önemli olduğunu gösteriyor, en azından resmi belgelerden örnekler göndermiş olabilirsiniz.
phk

-1
fold -w 100 -s text.txt

100 karaktere kadar her satırı bölmem gerektiğinden benim için çalıştı


1
Cevabınız diğerlerinin yapmadığı ne ekliyor?
Sheljohn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.