Çok uzun kelime satırlarını maksimum uzunluktaki ayrı satırlara ayırın


18

Boşluklarla ayrılmış tek bir uzun satırda paket listesi çıktısı bir komut dosyası var. Bu satıra dahil edilen bilgiler daha sonra bir kullanıcıya sunulacak olan bir metin dosyasına eklenecektir.

Uzun satırı, tanımlanmış bir maksimum uzunluğa, örneğin 80 karaktere sahip birden çok satıra bölmek istiyorum, ancak bölünme yalnızca boşluklarda gerçekleşmelidir (bu nedenle, tam olarak 80 karakterden sonra boşluk yoksa ve sonraki öğe yapacaktır) daha uzun).

Tek bir girişin 80 karakterden uzun olması durumunda büyük olasılıkla asla olmayacak ve bu girişin ortada bölünmüş olması ya da tek bir uzun satırla sonuçlanması umurumda değil.

Temel olarak, otomatik kaydırma seçildiğinde çoğu metin düzenleyicisinin yaptığı ile aynıdır, ancak bunu bir kabuk komut dosyasından yapmak istiyorum.

Örnek Giriş:

libkrb5-3 libk5crypto3 openssh-server libc-bin base-files sysvinit-utils bind9-host python-minimal python-reportbug dnsutils perl libgnutls-openssl27 mutt reportbug libdns88 perl-base whois bash libgnutls26 perl-modules libapt-inst1.5 python2.7 libexpat1 libisccc80 libgssrpc4 apt-utils procmail apt locales liblwres80 libkrb5support0 python openssh-client multiarch-support libgcrypt11 dpkg libxml2 libbind9-80 wget libapt-pkg4.12 file ssh libkadm5clnt-mit8 libisccfg82 libkadm5srv-mit8 tzdata gpgv krb5-locales python2.7-minimal libgpgme11 openssl rsyslog libkdb5-6 host sysv-rc libgssapi-krb5-2 libisc84 libc6 initscripts sysvinit libmagic1 libssl1.0.0 gnupg

İstenen örnek çıktı:

libkrb5-3 libk5crypto3 openssh-server libc-bin base-files sysvinit-utils
bind9-host python-minimal python-reportbug dnsutils perl libgnutls-openssl27
mutt reportbug libdns88 perl-base whois bash libgnutls26 perl-modules
libapt-inst1.5 python2.7 libexpat1 libisccc80 libgssrpc4 apt-utils procmail apt
locales liblwres80 libkrb5support0 python openssh-client multiarch-support
libgcrypt11 dpkg libxml2 libbind9-80 wget libapt-pkg4.12 file ssh
libkadm5clnt-mit8 libisccfg82 libkadm5srv-mit8 tzdata gpgv krb5-locales
python2.7-minimal libgpgme11 openssl rsyslog libkdb5-6 host sysv-rc
libgssapi-krb5-2 libisc84 libc6 initscripts sysvinit libmagic1 libssl1.0.0 gnupg

Yanıtlar:


30

Ne istiyorsun fold:

fold -s -w80 file
  • -s: foldsadece boşluklarda kırılmasını söyler
  • -w80: genişliği ilan etti
  • fold: ayrıca stdin'den okur: echo "..." | fold -s -w80

1
Mükemmel, çok teşekkürler. Basit bir emir olması gerektiğinden emindim ama hiç katlanmadı.
Ocak

Teşekkür ederim. Her nasılsa, fold kullanırken çıktıyı bir dosyaya kaydedemiyorum.
user1323995
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.