SED 替换包含 CR LF 的字符串

SED to replace strings containing CR LF

我正在尝试替换文件文本中包含 CR 和 LF 的字符串。

所以输入文件

abcd
efgh
ijkl

变成

abcd
zxgh
ijkl

从字面上看,我希望字符串 "cd + CR + LF + ef" 被替换为 "cd + CR + LF + zx"。 我试过了

sed -e 's/cd\red/cd\rzx/g' file
sed -e 's/cd\r\ned/cd\r\nzx/g' file

没有成功

切换到 Perl。

perl -0777 -pe 's/cd\r\nef/cd\r\nzx/' file

或者使用 GNU sed:

sed '/cd\r$/{N;s/cd\r\nef/cd\r\nzx/}' file

输出:

abcd
zxgh
ijkl

使用sed,您可以按如下方式进行:

sed '/cd\r$/N;s/cd\r\nef/cd\r\nzx/' file