Adi*_*Adi 2 regex linux bash scripting sed
我希望用斜杠替换所有反斜杠(与include指令在同一行上出现).
这是我到现在为止所拥有的......
echo '#include "..\etc\filename\yes"' | sed 's&\(#include.*\)\\&\1\/&g'
Run Code Online (Sandbox Code Playgroud)
这可以按照我的预期工作,但问题是它一次只替换一个\ ...如果我想在上面的文本中替换所有三个,我必须运行sed命令3次... g标志在最终应该在全球范围内进行替换,不是吗?
我在Ubuntu 11.10上使用sed 4.2.1 ...
问题是你的匹配方式.这.*是贪婪的,所以它首先匹配最后一个反斜杠,然后认为它已经完成了.试试这个:
... | sed '/^#include/s&\\&/&g'
Run Code Online (Sandbox Code Playgroud)
仅在与第一个模式匹配的行上运行替换.