jan*_*jan 22 linux shell-script
我有一个脚本,它在一个由空格分隔的长行上输出一个包列表。该行中包含的信息应插入到文本文件中,该文件稍后呈现给用户。
我想将长行拆分为具有定义的最大长度的多行,例如 80 个字符,但拆分应仅发生在空格处(因此,如果恰好 80 个字符之后没有空格,则某些行可能会更短,并且下一个元素将使时间更长)。
单个条目超过 80 个字符的情况可能永远不会发生,我不在乎这个条目是在中间分割还是导致单个更长的行。
基本上,它是在选择自动包装的情况下,大多数文本编辑器的表现相同,但我想从shell脚本执行它。
示例输入:
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
Run Code Online (Sandbox Code Playgroud)
所需的示例输出:
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
Run Code Online (Sandbox Code Playgroud)
cha*_*aos 37
你想要的是fold
:
fold -s -w80 file
Run Code Online (Sandbox Code Playgroud)
-s
: 告诉fold
只在空格处中断-w80
: 声明宽度fold
:也从标准输入读取: echo "..." | fold -s -w80
归档时间: |
|
查看次数: |
18915 次 |
最近记录: |