Regex 正则表达式替换每行中最后出现的字符串
我正在使用Regex 正则表达式替换每行中最后出现的字符串,regex,linux,shell,scripting,sed,Regex,Linux,Shell,Scripting,Sed,我正在使用sed-e的/\(.*\)ABC/\1DEF/'myfile将文件中最后出现的ABC替换为DEF 我想修改它,将文件中每一行的ABC替换为DEF 可以用正则表达式吗 谢谢您需要在sed末尾添加“g”: sed -e 's/\(.*\)ABC/\1DEF/g' 这告诉sed替换正则表达式的每一次(“全局”),而不仅仅是第一次 编辑:如果要确保它替换行上最后一次出现的ABC,还应添加一个$: sed -e 's/\(.*\)ABC$/\1DEF/g' $不仅保证最后出现的ABC,而且保
sed-e的/\(.*\)ABC/\1DEF/'myfile
将文件中最后出现的ABC
替换为DEF
我想修改它,将文件中每一行的ABC
替换为DEF
可以用正则表达式吗
谢谢您需要在sed末尾添加“g”:
sed -e 's/\(.*\)ABC/\1DEF/g'
这告诉sed替换正则表达式的每一次(“全局”),而不仅仅是第一次
编辑:如果要确保它替换行上最后一次出现的ABC,还应添加一个$
:
sed -e 's/\(.*\)ABC$/\1DEF/g'
$
不仅保证最后出现的ABC
,而且保证它是一行的末尾。因此,它可能是不必要的。实际上,sed-e的/\(.*\)ABC/\1DEF/”将替换文件每一行中最后出现的
ABC`。@anubhava是对的。事实上,我不确定你是否解释得很好。@anubhava我认为它只是替换了文件中最后一个出现的内容,而不是每一行。我可能错了。最后用/g
对它进行了测试,就像建议的那样,它也能正常工作。在我的Ubuntu linux和Mac上,不需要使用/g
标志来替换上次出现的ABC