我正在处理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。
答案 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
,因为反斜杠需要在双引号内转义。