Regex 使用bash脚本搜索和替换包含点、单引号和双引号的字符串
我需要在文件夹的所有文件中搜索字符串Regex 使用bash脚本搜索和替换包含点、单引号和双引号的字符串,regex,bash,sed,Regex,Bash,Sed,我需要在文件夹的所有文件中搜索字符串cf['stack.over.flow'],并使用bash脚本将其替换为stack\u over\u flow。我用sed尝试了很多方法,但是没有成功地避开单引号和点。请帮忙 编辑: 如何处理带有双引号的字符串。 ex:cf[“stack.over.flow”]对于像cf[“stack.over.flow”]这样的双引号,您可以使用: sed "s/cf\['stack\.over\.flow']/STACK_OVER_FLOW/" you
cf['stack.over.flow']
,并使用bash脚本将其替换为stack\u over\u flow
。我用sed
尝试了很多方法,但是没有成功地避开单引号和点。请帮忙
编辑:
如何处理带有双引号的字符串。
ex:
cf[“stack.over.flow”]
对于像cf[“stack.over.flow”]
这样的双引号,您可以使用:
sed "s/cf\['stack\.over\.flow']/STACK_OVER_FLOW/" your_dir/*
sed 's/cf\["stack\.over\.flow"]/STACK_OVER_FLOW/' your_dir/*
对于双引号的情况,如
cf[“stack.over.flow”]
,您可以使用:
sed "s/cf\['stack\.over\.flow']/STACK_OVER_FLOW/" your_dir/*
sed 's/cf\["stack\.over\.flow"]/STACK_OVER_FLOW/' your_dir/*
链接命令并在执行命令之前添加一个-i
在适当位置执行替换:
sed -i "s/cf\['stack\.over\.flow']/STACK_OVER_FLOW/" your_dir/* &&
sed -i 's/cf\["stack\.over\.flow"]/STACK_OVER_FLOW/' your_dir/*
编辑:@Jetchisel提供了一种使用单个sed命令进行编辑的方法:
sed -i "s/cf\[[\"']stack\.over\.flow[\"']\]/STACK_OVER_FLOW/" your_dir/*
其工作方式是匹配:
- 开场白
cf\[
- 后跟(转义)双引号或单引号:
[\”]
- 后跟“stack.over.flow”字符串(转义
):stack\.over\.flow
- 后跟(转义的)双引号或单引号:
[\”]
- 后跟结束转义方括号:
\]
- 然后将上述所有内容替换为“STACK_OVER_FLOW”
sed“s/cf\[\'']stack\.over\.flow[\']\]/stack\.u over\.flow/.txt
Look mah,只有一个sed
:-)@AjayGanesan-这个页面()比我以前解释得更好-还有一个很棒的sed教程(),我还在学习!