unix sed和重定向[重复]

Posted

技术标签:

【中文标题】unix sed和重定向[重复]【英文标题】:unix sed and redirection [duplicate] 【发布时间】: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 人让其他人对在堆栈溢出问题上提出问题感到不舒服......不过感谢您的提示,因为我从来没有想过在问之前用谷歌搜索它。 【参考方案1】:

如果你想内联编辑文件,你应该使用 -i 选项:

sed -i 's/lineToChange/newString/' example.txt

这会将 sed 运行到一个新文件中并将该文件移动到 example.txt。每当您执行“>”时,您实际上清空了 example.txt,这使得 sed 可以处理它。

【讨论】:

感谢您的快速回答!虽然不赞成.... 我没有给你投反对票,指责某人这样做是很不礼貌的。

以上是关于unix sed和重定向[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JSP转发和重定向之间的区别[重复]

Linux入门-7 Linux管道重定向以及文本处理

Servlet - 请求转发和重定向

将 sed 的输出重定向到文件时,sudo 不起作用[重复]

htaccess 重写和重定向 SEO 友好的 URL

SpringMVC框架如何实现请求转发和重定向呢?