Regex sed:如何在将选定文本保留在选定文本选择中的同时替换文本?
使用sed,我将如何浏览文件并替换以下内容:Regex sed:如何在将选定文本保留在选定文本选择中的同时替换文本?,regex,bash,sed,Regex,Bash,Sed,使用sed,我将如何浏览文件并替换以下内容: alphabet.abc = "123"; 与 我目前拥有的是: for i in $(ls -a); do sed -i 's/asd/dfg/g' $i; done; 但它不能在保留选定内容的同时替换选定内容。要将文本部分保留在选定或匹配的字符串中,您需要使用。正如@anubhava在其评论中所说 例如: $ echo 'alphabet.abc = "123";' | sed 's/\(alphabet\.\)\([a-z]\+\) *=
alphabet.abc = "123";
与
我目前拥有的是:
for i in $(ls -a); do sed -i 's/asd/dfg/g' $i; done;
但它不能在保留选定内容的同时替换选定内容。要将文本部分保留在选定或匹配的字符串中,您需要使用。正如@anubhava在其评论中所说 例如:
$ echo 'alphabet.abc = "123";' | sed 's/\(alphabet\.\)\([a-z]\+\) *= *\([^;]*\);/\1\U\2(\3);/g'
alphabet.ABC("123");
通过GNUfind
命令:
您可以在要处理的文件所在的目录上运行以下命令
find . -type f -execdir sed -i 's/\(alphabet\.\)\([a-z]\+\) *= *\([^;]*\);/\1\U\2(\3);/g' {} \;
你想把点后面的字母从小写改为大写吗?从某物到任何东西,从
abc=“123”的转换代码>至<代码>ABC(“123”)代码>是重要的部分。你添加的答案为我解决了这一问题,并提供了许多替代可能性,所以这很好。在将其标记为正确之前,我只需等待一秒钟,以确保没有遗漏任何内容。请避免解析来自ls
的输出。以为i in*运行您的循环;做完成
您将如何递归地执行*
中的i?
$ echo 'alphabet.abc = "123";' | sed 's/\(alphabet\.\)\([a-z]\+\) *= *\([^;]*\);/\1\U\2(\3);/g'
alphabet.ABC("123");
find . -type f -execdir sed -i 's/\(alphabet\.\)\([a-z]\+\) *= *\([^;]*\);/\1\U\2(\3);/g' {} \;