【问题标题】:Find and sed: how to replace files in place?查找和 sed:如何替换文件?
【发布时间】:2017-09-12 06:26:41
【问题描述】:

我想用另外两个单词替换由两个单词组成的短语,用空格隔开:

find . -type f -exec sed 's/w1 w2/w3 w4/g' {} +

然而,即使模式“w1 w2”出现在当前目录的许多文件中,似乎也没有任何改变。

【问题讨论】:

  • 您可能会发现 sed 的选项 -i 很有用。目前替换只在标准输出上完成,对文件没有影响。
  • 为什么这会让您感到惊讶?当你运行sed 's/w1 w2/w3 w4/g' filename 时会发生什么?你现在明白你的错误了吗?
  • @Jens 很好的答案,但不幸的是人们来到 StackOverflow 是为了寻找答案,而不是寻找如何学习。

标签: sed find


【解决方案1】:

尝试为 sed 指定 -i--in-place 选项。否则它实际上不会更改文件。查看sed documentation 了解更多信息。

附注:如果您首先在没有find 的情况下使用此功能,您会发现更容易排除故障。从小处着手,然后逐步建立。

【讨论】:

    猜你喜欢
    • 2017-08-07
    • 2020-06-24
    • 2012-02-14
    • 2010-12-20
    • 2020-02-03
    • 2020-08-05
    • 2012-06-09
    • 1970-01-01
    • 2016-05-12
    相关资源
    最近更新 更多