首页 > 解决方案 > SED 替换包含 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

没有成功

标签: sedreplacenewline

解决方案


切换到 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

输出:

A B C D
zxgh
伊克尔

推荐阅读