我试图用正则表达式(sed)剪切(替换)一个字符串,但想要匹配第一次出现.在结果中,您可以看到它在第三个DATA处停止.
文本:
Cool Text Cool Text DATA : first text DATA : second text DATA : third text
Run Code Online (Sandbox Code Playgroud)
正则表达式:
sed 's/.*DATA//'
Run Code Online (Sandbox Code Playgroud)
结果:
: third text
Run Code Online (Sandbox Code Playgroud)
使用sed,您可以使用占位符的技巧:
sed 's/DATA/###/;s/.*###//;'
Run Code Online (Sandbox Code Playgroud)
使用gnu grep,您可以在perl模式下使用lookbehind:
grep -Po '(?<=DATA).*'
Run Code Online (Sandbox Code Playgroud)