매우 긴 단어 줄을 최대 길이의 개별 줄로 나눕니다.


18

공백으로 구분 된 하나의 긴 줄에 패키지 목록을 출력하는 스크립트가 있습니다. 이 줄에 포함 된 정보는 텍스트 파일에 삽입되어 나중에 사용자에게 제공됩니다.

긴 줄을 정의 된 최대 길이 (예 : 80 자)로 여러 줄로 나누고 싶지만 분할은 공백에서만 발생해야합니다 (따라서 정확히 80 자 뒤에 공백이 없으면 다음 줄이 만들어지면 일부 줄이 짧아 질 수 있습니다) 더 이상).

단일 항목이 80자를 초과하는 경우는 절대 발생하지 않으며이 항목이 중간으로 나뉘어 있거나 한 줄이 더 길어도 상관 없습니다.

기본적으로 자동 줄 바꿈을 선택할 때 대부분의 텍스트 편집기가하는 것과 동일하지만 쉘 스크립트에서 수행하고 싶습니다.

입력 예 :

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

원하는 출력 예 :

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

답변:


30

당신이 원하는 것 fold:

fold -s -w80 file
  • -s: fold공간에서만 깨지도록 지시 합니다.
  • -w80: 너비를 선언
  • fold: stdin에서도 읽습니다. echo "..." | fold -s -w80

1
고마워요. 간단한 명령이 있어야한다고 확신했지만 접는 소리는 들어 본 적이 없습니다.
1 월

감사합니다. 어떻게 든 fold를 사용할 때 출력을 파일에 저장하지 못합니다.
user1323995
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.