使用sed,我将如何浏览文件并替换以下内容:
alphabet.abc = "123";
与
alphabet.ABC("123");
我现在拥有的是:
for i in $(ls -a); do sed -i 's/asd/dfg/g' $i; done;
但它不能在选择内部保留某些内容时替换选择。
答案 0 :(得分:1)
要将文本的一部分保留在选定或匹配的字符串中,您需要使用capturing groups。AS @anubhava在评论you don't need to parse the output of ls
command中说。
for i in *; do sed -i 's/\(alphabet\.\)\([a-z]\+\) *= *\([^;]*\);/\1\U\2(\3);/g' $i; done;
示例:
$ echo 'alphabet.abc = "123";' | sed 's/\(alphabet\.\)\([a-z]\+\) *= *\([^;]*\);/\1\U\2(\3);/g'
alphabet.ABC("123");
通过GNU find
命令:
您可以在要使用的文件所在的目录上运行以下命令。
find . -type f -execdir sed -i 's/\(alphabet\.\)\([a-z]\+\) *= *\([^;]*\);/\1\U\2(\3);/g' {} \;