如何使用sed命令将文件中code=后的动态值原位替换为空
解决方案
适用Linux(GNU sed)的命令
直接执行以下命令即可原地修改文件,将所有code=行等号后的内容清空:
sed -i '/^code=/s/=.*$/=/' file.txt
命令说明:
/^code=/:筛选所有以code开头的行,只对这些行做后续替换操作s/=.*$/=/:替换规则是匹配等号=之后到行尾的所有内容,替换成单个=,就能得到code=的效果
适用MacOS的命令
Mac自带的BSD sed要求-i参数必须明确指定备份文件后缀,不需要备份的话传空字符串即可:
sed -i '' '/^code=/s/=.*$/=/' file.txt
原命令失效原因
你之前写的sed -i 's/^code=$/code=/1g' file.txt里的正则^code=$是匹配**整行完全等于code=**的行,而你需要处理的是code=后带有动态值的行,匹配规则完全不对应,因此不会产生任何修改效果。
内容的提问来源于stack exchange,提问作者user16967598
相关产品推荐
相关产品推荐

