正则表达式不与sed一起工作

use*_*049 6 regex sed

我在文件中有这个文本

"0000000441244"
"0000000127769"
Run Code Online (Sandbox Code Playgroud)

我想用'L'替换所有零

我正在尝试这一点,没有任何东西被扼杀

sed -e 's/0+/L/g' regex.txt

sed -e 's/(0+)/L/g' regex.txt

我想知道我错在哪里

per*_*eal 10

Posix兼容版本应使用00*而不是0+:

sed -e 's/00*/L/g' regex.txt
Run Code Online (Sandbox Code Playgroud)

作为旁注,g如果你想转换"000000012700009"甚至"000000012709"进入,你只需要标志"L127L9".否则,*in 's/00*/L/'将在开头包括全部为零.


Hui*_*eng 7

在Linux(GNU版本的sed)中, 和sed -e 's/0\+/L/g' regex.txtsed -r 's/0+/L/g' regex.txt可以,但是如果你使用Mac(BSD版本的sed),它们都不起作用,而是你必须使用这个: sed -E 's/0+/L/g' regex.txt

实际上最后一个也可以在 Linux 上运行,因此它更便携。对于这个特殊问题,@perreal 的建议也是可移植的。但是,当您确实需要+正则表达式中的 或其他元字符时,您最好知道如何解决它。