다음 텍스트가 있습니다.
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;'
답변2
GNU와 함께grepSTART...END
, 한 줄에 최대 하나만 있다고 가정합니다.
grep -oPm1 'START\K.*?(?=END)' file
그리고앗END
, 첫 번째 발생이 첫 번째 행에 있고 첫 번째 발생 이전에 발생이 없으며 START
반환할 값에 아무것도 없다고 가정합니다.START
awk -F'START|END' '{print $2;exit}' file
또는
awk -F'START|END' '$0 ~ FS {print $2;exit}' file
그리고진주:
perl -lne 'do{ print $1; last } if /START(.*?)END/' file
산출
firstgroup