【发布时间】:2017-01-10 23:09:47
【问题描述】:
我正在尝试在 linux 服务器 (Ubuntu 16.04) 中使用 sed 修改文件。
这是我正在运行的代码示例:
sed 's/lineToChange/newString/' example.txt > example.txt
我觉得在执行此命令后我应该在 example.txt 中看到 newString,因为 sed 命令的结果(在没有重定向的情况下自行执行时打印 newString)被重定向以覆盖 example.txt 内容。
不幸的是,当我这样做时文件最终为空......
我的常识告诉我这应该是正确的,但很明显这里有一些我不明白的地方。
【问题讨论】:
-
>具有更高的优先级。换句话说>文件重定向将首先发生。因此,当sed尝试处理该文件时,它会看到一个空文件。在sed中使用-i(就地编辑)选项。例如:sed -i 's///' file -
谢谢坐。这真是一个很好的解释。像你这样的 Karoly 人让其他人对在堆栈溢出问题上提出问题感到不舒服......不过感谢您的提示,因为我从来没有想过在问之前用谷歌搜索它。