2009-12-14 148 views
0

有没有一种方法来搜索和替换字符串使用单个unix命令grep recusrsively在多个目录? 我知道它可以通过使用查找与其他实用程序,如sed perl等的组合来完成。但是有没有一种方法,我们可以只使用grep在unix命令行上执行此操作?搜索并替换字符串

+1

为什么约束用grep?涉及sed将使这更容易imho。 – 2009-12-14 06:10:49

+1

确实。 'grep'仅用于搜索,它不会*替换*。 'sed'和'perl'都是更合适的工具。 – 2009-12-14 06:14:57

回答

1

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

0

的一种方式,如果你有GNU发现和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