繁体   English   中英

如何更改 sed 的记录分隔符

[英]How can i change the Record separator for sed

我知道我可以在 awk 中更改RS =something

有什么方法可以将\\n RS 更改为 sed 中的 muliline 模式

简短的回答:不,你不能。 Sed 读取文本行,而不是带有字段的记录。

根据文本的性质,您可以使用tr首先将所有\\n更改为未使用的字符,并将所需的(单字符)记录分隔符更改为\\n sed进行所需的更改,然后使用tr将分隔符改回。

您还可以操纵保留空间,让您处理多行文本。 例如,这在 Dougherty 和 Robbins 的sed & awk 中有所描述。

不过,使用awk可能更容易。

GNU sed 有选项-z / --null-data / --zero-terminated用于以空分隔的记录,但这已经足够了。

例子:

sed -z 's/\n\n+/\n\n/g'

你想用 sed 替换所有的换行符吗?
然后这样做。 如果不解释你想要什么

 sed -e :a -e N -e 's/\n/|/g' -e '$!ba' file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM