您好,我想包装以下逗号分隔的数据:
-X, run, abs, absolute, accept, accept, alarm, schedule, atan2, arctangent, bind, binds, binmode, prepare, bless, create, caller, get, chdir, change, chmod, changes, chomp, remove, chop, remove, chown, change, chr, get, chroot, make, close, close, closedir, close, connect, connect, continue, optional, cos, cosine, crypt, one-way, dbmclose, breaks, dbmopen, create, defined, test, delete, deletes, die, raise, do, turn, dump, create, each, retrieve, endgrent, be, endhostent, be, endnetent, be, endprotoent, be, endpwent, be, endservent, be, eof, test, eval, catch, exec, abandon, exists, test, exit, terminate, exp, raise, fcntl, file, fileno, return, flock, lock, fork, create, format, declare, formline, internal, getc, get, getgrent, get, getgrgid, get, getgrnam, get, gethostbyaddr, get, gethostbyname, get, gethostent, get, getlogin, return, getnetbyaddr, get, getnetbyname, get, getnetent, get, getpeername, find, getpgrp, get, getppid, get, getpriority, get, getprotobyname, get, getprotobynumber, get, getprotoent, get, getpwent, get, getpwnam, get, getpwuid, get, getservbyname, get, getservbyport, get, getservent, get, getsockname, retrieve, getsockopt, get, glob, expand, gmtime, convert, goto, create, grep, locate, hex, convert, import, patch, int, get, ioctl, system-dependent, join, join, keys, retrieve, kill, send, last, exit, lc, return, lcfirst, return, length, return, link, create, listen, register, local, create, localtime, convert, log, retrieve, lstat, stat, m//, match, map, apply, mkdir, create, msgctl, SysV, msgget, get, msgrcv, receive, msgsnd, send, my, declare, next, iterate, no, unimport, oct, convert, open, open, opendir, open, ord, find, pack, convert, package, declare, pipe, open, pop, remove, pos, find, print, output, printf, output, prototype, get, push, append, q/STRING/, singly, qq/STRING/, doubly, quotemeta, quote, qw/STRING/, quote, qx/STRING/, backquote, rand, retrieve, read, fixed-length, readdir, get, readlink, determine, recv, receive, redo, start, ref, find, rename, change, require, load, reset, clear, return, get, reverse, flip, rewinddir, reset, rindex, right-to-left, rmdir, remove, s///, replace, scalar, force, seek, reposition, seekdir, reposition, select, reset, semctl, SysV, semget, get, semop, SysV, send, send, setgrent, prepare, sethostent, prepare, setnetent, prepare, setpgrp, set, setpriority, set, setprotoent, prepare, setpwent, prepare, setservent, prepare, setsockopt, set, shift, remove, shmctl, SysV, shmget, get, shmread, read, shmwrite, write, shutdown, close, sin, return, sleep, block, socket, create, socketpair, create, sort, sort, splice, add, split, split, sprintf, formatted, sqrt, square, srand, seed, stat, get, study, optimize, sub, declare, substr, get, symlink, create, syscall, execute, sysread, fixed-length, system, run, syswrite, fixed-length, tell, get, telldir, get, tie, bind, time, return, times, return, tr///, transliterate, truncate, shorten, uc, return, ucfirst, return, umask, set, undef, remove, unlink, remove, unpack, convert, unshift, prepend, untie, break, use, load, utime, set, values, return, vec, test, wait, wait, waitpid, wait, wantarray, get, warn, print, write, print, y///, transliterate,使得在70字符行长度之前的最后一个逗号处添加换行符。这最好是在某种bash one liner中完成的。
发布于 2010-06-08 05:43:48
echo 'your, text, here' | fold -sw 70这应该会给出您想要的输出。不使用echo,您可以通过管道从文件或其他任何地方获取它,或者直接使用fold命令并将其粘贴到stdin上。
fold中的"-w 70“告诉它在每行70个字符之后换行,-s告诉它在每个逗号后面的空格上换行。
发布于 2010-09-29 05:11:03
对于您的comment关于逗号之间可能嵌入空格的情况,请执行以下操作:
我认为使用sed是正确的。您可以选择将所有空格映射到某个未使用的字符,然后将逗号映射到空格、fold,然后恢复原始映射。但我认为这会给你留下一些奇怪的东西,比如以空格开头的行。
因此,您似乎只想将前面没有逗号的任何空格重新映射到您知道文本中不存在的某些字符或序列,然后反转以将它们切换回来。
例如,
echo "$blahblah" | sed 's/\([^,]\) /\1\t/g' | fold -s | sed 's/\t/ /g如果文本中没有制表符,并且不会有连续的嵌入空格,将会起作用。
如果有的话,我想你需要使用一些更复杂的东西,比如
echo "$blahblah" | \
perl -pe 's/([^, ])( +)/$1 . "_" x length($2)/ge' | \
fold -s | \
tr _ ' '/ge使每个替换值都被计算为perl表达式。
末尾的tr基本上等同于最后一个命令中的结束sed。
这假设不能保证字符"_“不会出现在源文本中。当然还有更好的字符可供选择,例如,^V之类的未使用的控制字符。如果您在最后使用现代的perl进行转换,我认为您可以使用一些晦涩的多字节unicode字符。
这个建议是相当即兴的,而且有一些明显的问题。例如,它不会在逗号后中断,除非那里有空格。这可能不是你真正想要的。在CPAN/PyPI/等方面做一些深入研究可能是值得的,以获得更健壮的东西。或者你可以写你自己的折叠工具。
https://stackoverflow.com/questions/2993341
复制相似问题