【问题标题】:search and replace a string搜索和替换字符串
【发布时间】:2009-12-14 06:05:20
【问题描述】:

有没有办法在多个目录中使用单个 unix 命令grep recursively 搜索和替换字符串? 我知道这可以通过将 find 与 sed perl 等其他实用程序结合使用来完成。但是有没有一种方法可以让我们只使用 grep 在 unix 命令行上执行此操作?

【问题讨论】:

  • 为什么要限制使用 grep?参与 sed 将使这更容易恕我直言。
  • 确实如此。 grep 仅用于搜索,它根本不替换。 sedperl 都是更合适的工具。

标签: unix command-line grep


【解决方案1】:

我不认为只有 grep 可以在这里工作;涉及 sed 和其他实用程序会更容易,而不仅仅是 grep

【讨论】:

    【解决方案2】:

    一种方法,如果你有 GNU find 和 bash shell

    find /path -type f -iname "*.txt" | while read -r FILE
    do
        while read -r LINE
        do
           case "$LINE" in
             *WORD_TO_SEARCH* ) LINE=${LINE//WORD_TO_SEARCH/REPLACE};;
           esac
           echo "$LINE" >> temp
        done < "$FILE"
        mv temp "$FILE"
    done
    

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2010-11-14
      • 2015-11-13
      • 2010-09-10
      相关资源
      最近更新 更多