Jak*_*ski 11 shell portability filesplitting sed text-manipulation
我想将包含HTTP响应的文件拆分为两个文件:一个只包含HTTP头,另一个包含消息正文.为此,我需要\r使用shell脚本将文件拆分为第一个空行(或第一行上仅包含CR =' '字符的UNIX工具)上的两个文件.
如何以便携方式(例如使用sed,但没有GNU扩展)这样做?可以假设空行不是文件中的第一行.空行可以得到文件中的任何一个,没有一个或两个; 对我来说没关系.
Pau*_*ce. 15
你可以使用csplit:
echo "a
b
c
d
e
f" | csplit -s - '/^$/'
Run Code Online (Sandbox Code Playgroud)
要么
csplit -s filename '/^$/'
Run Code Online (Sandbox Code Playgroud)
(假设的"文件名"的内容是一样的回声的输出)会产生,在这种情况下,两个文件名为"XX00"和"XX01".例如,前缀可以从"xx"更改为"outfile",-f outfile并且文件名中的位数可以更改为3 -n 3.如果需要处理Macintosh行结尾,可以使用更复杂的正则表达式.
要在每个空行拆分文件,您可以使用:
csplit -s filename '/^$/' '{*}'
Run Code Online (Sandbox Code Playgroud)
该图案'{*}'使前面的图案尽可能多地重复.
Joh*_*ica 14
$ cat test.txt
a
b
c
d
e
f
$ sed '/^$/q' test.txt
a
b
c
$ sed '1,/^$/d' test.txt
d
e
f
Run Code Online (Sandbox Code Playgroud)
更改/^$/到/^\s*$/,如果你希望有可能是空白的空行.