我一直在尝试使用此sed命令中的各种变体,以便在替换字符串中插入换行符,并匹配我想要替换的多行字符串。但是,当我尝试使用^M
或\n
时,它无效或创建\r
。
我使用GNU sed和zsh:
find ./ -type f -exec sed -i "s/<?php echo \$var_one;?>/<?php echo \$var_one;?>\n\n/g" {} \;
find ./ -type f -exec sed -i 's/<?php echo \$var_one;?>/<?php echo \$var_one;?>\n\n/g' {} \;
有没有办法用sed做这个,或者我做错了什么?
答案 0 :(得分:0)
我假设你有一个文件
<?php echo $var_one;?>/<?php echo $var_one;?>
是$ var而不是\$var
find -type f -exec sed 's#\(<?php echo \$var_one;?>/<?php echo \$var_one;?>\)#\1\n#g' {} \;
用你的sed语句周围的单引号替换双引号
使用另一个分隔符,例如我使用#
。如果您使用/
,则会出现错误,因为/
位于您的模式中。