![sed 表达式提取第一个匹配的组](https://linux22.com/image/177197/sed%20%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%8F%90%E5%8F%96%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8C%B9%E9%85%8D%E7%9A%84%E7%BB%84.png)
我有以下文字:
somegarbageSTARTfirstgroupENDsomeendgarbage
someohtergarbageSTARTsecondgroupENDsomeotherendgarbage
...
我想firstgroup
使用 sed 提取。
我尝试过sed -nr 's/.*START(.*)END.*/\1/p'
,但它不起作用,它提取所有匹配项而不仅仅是第一个匹配项。
答案1
sed -nr '/.*START(.*)END.*/{s/.*START(.*)END.*/\1/p;q}'
# or (probably faster)
sed -nr 's/.*START(.*)END.*/\1/p; t quit; b end; : quit; q; : end;'