【问题标题】:sed: -i may not be used with stdinsed: -i 不能与标准输入一起使用
【发布时间】:2012-01-03 18:14:59
【问题描述】:

在 PHP 中,我使用 proc_open() 通过标准输入传递一个 sed() 请求。

然而

sed -i -e 's/USE `.*`;//'

结果:

sed: -i 不能与标准输入一起使用

当我在 shell 中运行相同的命令时,它可以正常工作。

有接受者吗?找不到任何答案。

请注意,使用 sed -i 的原因是因为所讨论的文件很大(1 GB)。

【问题讨论】:

  • 您建议如何就地编辑标准输入?
  • 不确定。我想知道解决此问题的最佳方法是什么。

标签: php macos sed stdin


【解决方案1】:

-i 标志意味着 sed 打开文件,修改它们,然后保存它们。

由于您无法保存标准输入,因此 -i 标志与标准输入一起使用没有意义。

要让它做一些有意义的事情,要么在命令行上提供文件(这将修改文件),要么删除 -i 标志,修改后的输入将打印到标准输出。

【讨论】:

  • sed -i 被指示更新大小为 1 GB 的文件。你会建议做什么呢?显然,将输出打印到标准输出并不是一个真正的选择。
  • 那么显然剩下的选项是sed -i pattern filename
猜你喜欢
  • 2014-02-10
  • 1970-01-01
  • 2012-04-16
  • 2011-02-19
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
相关资源
最近更新 更多