【问题标题】:replace chracter with new line using sed command in PHP file在 PHP 文件中使用 sed 命令将字符替换为新行
【发布时间】:2016-04-04 15:34:35
【问题描述】:

我正在处理 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'");

用*替换第一个两个字符

这两个字符是'

解决方案:

我解决了这个问题:

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。

【问题讨论】:

  • 试试shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c "tr '&lt; ' '\n' &lt; $text_files_path/diffFile.txt 2&gt;&amp;1"");
  • @heemayl 不工作。我更喜欢使用 sed。
  • 请注意,@heemayl 在

标签: php bash sed


【解决方案1】:

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

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

【讨论】:

  • 它只是删除'
  • 如果您的文件有 Windows 行结尾,那么您将不得不使用 \\r\\n 而不仅仅是 \\n
  • 天哪!你解决了一个需要一个多星期才能解决的问题!非常感谢亲爱的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 2016-11-12
  • 2016-05-29
  • 2018-09-16
相关资源
最近更新 更多