【发布时间】:2019-03-03 10:30:14
【问题描述】:
问题:用\n 替换一些正则表达式sed。
解决办法:还有很多类似的答案[1][2][3][4],还有很多其他的链接我就不贴了。他们都建议您创建一个新标签:a,合并行N,如果不是文件结束$!ba,则分支到:a,然后执行一些命令。
也就是说……
在 GNU sed 手册中,有 -z 选项:
-z
--null-data
--zero-terminated
Treat the input as a set of lines, each terminated by a zero byte
(the ASCII ‘NUL’ character) instead of a newline. This option can
be used with commands like ‘sort -z’ and ‘find -print0’ to process
arbitrary file names.
所以,首先,出于比较的原因,如果我们尝试幼稚的方法:
$ seq 3 | sed 's/\n/ /g'
1
2
3
但是,使用这个-z 选项:
$ seq 3 | sed -z 's/\n/ /g'
1 2 3
真正的问题:为什么?
鉴于它“合并”了文档中指定的所有行,我预计我将不得不使用 \0 而不是 \n,因为:
将输入视为一组行,每行以零字节结尾 (ASCII ‘NUL’ 字符)
由于我没有找到任何与之相关的帖子,我想我可能在这里误解了一些东西......那么,它到底有什么作用?为什么会起作用?
【问题讨论】:
标签: sed