使用PHP文件中的sed命令用新行替换chracter

时间:2016-04-03 09:01:40

标签: php bash sed

我正在处理PHP文件。我处理一些文本文件,并希望替换每次出现的'< '用新的一行。

我正在使用sed命令:

shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c 'sed -i -r \'s/'< '/'\n'/\' $text_files_path/diffFile.txt 2>&1'");

但是,它没有用。

我正在使用:

shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c 'sed -i -r \'s/.{2}//\' $text_files_path/diffFile.txt 2>&1'");

删除每行的前两个字符。

shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c 'sed -i -r \'s/.{2}/*/\' $text_files_path/diffFile.txt 2>&1'");

用*

替换前两个字符

这两个字符是&#39;&lt; &#39 ;.现在我想用一个新的替换它们。

解决方案:

我用以下方法解决了问题:

shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c \"sed -i -r 's/< /\\r\\n/' $text_files_path/diffFile.txt 2>&1\"");   

对于换行,我写道:\\r\\n而不是\\n。 非常感谢@Tom Fenech。

1 个答案:

答案 0 :(得分:0)

您需要调整引号的使用并转义换行符:

shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c \"sed -i -r 's/< /\\n/' $text_files_path/diffFile.txt 2>&1\"");

我在bash命令周围使用(转义)双引号,并在sed命令周围使用单引号。我还将\n更改为\\n,因为反斜杠需要在双引号内转义。