在PHP文件中使用sed命令将chracter替换为新行

在PHP文件中使用sed命令将chracter替换为新行,php,bash,sed,Php,Bash,Sed,我正在处理PHP文件。我处理一些文本文件,并希望用新行替换出现的“

我正在处理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/< /\\r\\n/' $text_files_path/diffFile.txt 2>&1\"");   
shell\u exec(“C:\\cygwin64\\bin\\bash.exe--login-C\”sed-i-r's/&1\”;
对于新行,我写了:
\\r\\n
而不是
\\n

非常感谢@Tom Fenech。

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

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

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

尝试
shell\u exec(“C:\\cygwin64\\bin\\bash.exe--login-C“tr”<''\n'<$text\u files\u path/diffFile.txt 2>&1”)@heemayl不工作。我更喜欢使用sed。注意@heemayl在<字符后面加了一个空格,就像你在问题中所做的那样。如果是这样的话,那么你的问题应该被相应地编辑。此外,您可能没有引用您的说明,但您在评论中没有具体说明。在任何情况下,“不工作”几乎没有任何意义。它只是删除“<”而不是用新行替换它。如果您的文件有Windows行结尾,那么您将不得不使用
\\r\\n
而不仅仅是
\\n
.OMG!你解决了一个需要一个多星期才能解决的问题!非常感谢,亲爱的。
shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c \"sed -i -r 's/< /\\r\\n/' $text_files_path/diffFile.txt 2>&1\"");   
shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c \"sed -i -r 's/< /\\n/' $text_files_path/diffFile.txt 2>&1\"");