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