replace命令不工作

我想要replace这个代码

for($counter=0;$counter<10;$counter++) { $yyarr[$counter]=$counter+2004; } 

  for($counter=2004;$counter<=date("Y");$counter++) { $yyarr[$counter-2004]=$counter; } 

我正在使用

 sed -e 's/for\(\$counter=0;\$counter<10;\$counter++\)\n\t+{\n\t+\$yyarr\[\$counter\]=\$counter+2004;\n\t+}/for\(\$counter=2004;\$counter<=date\("Y"\);\$counter++\)\n{\$yyarr\[\$counter-2004\]=\$counter;\n}/g' 

但不能通过。 尾随的空白需要被忽略。

sed处理数据行。 因此,您尝试搜索/替换您的模式的方式将无法正常工作。 不过,你可以利用空间来搜索你的模式。

以下内容可能适用于您:

 sed -n '1h; 1!H; ${g; s/\s*for(\$counter=0;\$counter<10;\$counter++)\s*\n\s*{\s*\n\s*\$yyarr\[\$counter\]=\$counter+2004;\s*\n}/\nfor($counter=2004;$counter<=date("Y");$counter++)\n{\n\t$yyarr[$counter-2004]=$counter;\n}/ p}' filename 
 sed ':a;N;$!ba;s/for($counter=0;$counter<10;$counter++)\n{\n $yyarr\[$counter\]=$counter+2004;\n}/for($counter=2004;$counter<=date("Y");$counter++)\n{\n $yyarr\[$counter-2004\]=$counter;\n}/g' file 

您正在换新换线的问题\n 。 上面的代码将解决它。