2

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

有什么办法可以将\nRS 更改为 sed 中的 muliline 模式

4

3 回答 3

2

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

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

您还可以操纵保留空间,让您处理多行文本。例如,Dougherty 和 Robbins在sed & awk中对此进行了描述。

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

于 2013-02-12T07:51:24.193 回答
1

GNU sed 具有用于空分隔记录的选项-z// --null-data--zero-terminated但这几乎是它所能得到的。

例子:

sed -z 's/\n\n+/\n\n/g'
于 2021-01-08T17:41:33.753 回答
-1

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

 sed -e :a -e N -e 's/\n/|/g' -e '$!ba' file
于 2013-02-12T07:45:48.557 回答