【问题标题】:sed treating filename as pattern?sed 将文件名视为模式?
【发布时间】:2013-12-31 02:47:05
【问题描述】:

我有以下 sed 命令从我的 index.php 中注释掉 phpinfo():

sudo sed -i "s/phpinfo();/\/\/phpinfo();/g" index.php

但它给了我:

$ sudo sed -i "s/phpinfo();/\/\/phpinfo();/g" index.php
sed: 1: "index.php": command i expects \ followed by text

如果我尝试指定整个路径,它会做同样的事情:

sed: 1: "/Library/WebServer/Docu ...": invalid command code W

我做错了什么?

【问题讨论】:

  • 明显?如何?我编辑了我的问题并直接从 bash 复制了它。逐字逐句。

标签: php macos apache bash sed


【解决方案1】:

试试这个 sed:

sudo sed -i.bak "s~phpinfo();~//phpinfo();~g" index.php
  • 旧的 sed 版本需要带有 -i 标志的文件扩展名
  • 最好使用替代正则表达式分隔符以避免转义/

【讨论】:

  • 成功了!谢谢你。 OS X 的 Unix 端一定有点过时了,因为这不是我第一次遇到过时的命令。
  • 我在 OSX 上也能感受到你的痛苦 :) 但我还安装了自制软件和所有较新的 gnu 版本,如 gsed、gawk 等。
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 2015-04-12
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 2011-06-03
相关资源
最近更新 更多