일부 데이터를 구문 분석하는 데 문제가 있습니다.
내 파일은 다음과 같습니다.
bliblablo-/interestingdata1UUUUUUUUUUUUUUU/-blublu-/interestingdata2UUUUUUUUUUUUUUU/-blybly-/etcetcetc
나는 다음을 얻어야 한다:
interestingdata1
interestingdata2
다음과 같은 "흥미로운 데이터"가 하나만 있는 경우:
bliblablo-/interestingdata1UUUUUUUUUUUUUUU/-bl
다음 명령이 나에게 효과적이었습니다.
cat file | sed -E 's/.*[-][/](.*)[U]{15}.*/\1/g'
그러나 더 이상 동일한 문자열의 여러 일치 항목에 대해 작동하지 않습니다(마지막 일치 항목만 인쇄함). 내 구분 기호는 항상 "-/"로 시작하고 "UUUUUUUUUUUUUU"로 끝납니다.사이에 무엇이 있는지는 모르겠지만 모든 것을 추출해야 합니다..
이 문제를 해결하는 방법을 아는 사람이 있나요?
답변1
미리보기 및 비탐욕적 일치와 함께 PCRE 모드에서 GNU grep 사용:
$ grep -Po '(?<=-/).*?(?=U{15})' file
interestingdata1
interestingdata2
답변2
귀하의 예에 따르면 필요한 것은 이것이며 모든 UNIX 시스템의 모든 쉘에서 모든 awk와 작동합니다.
$ awk -F'([^/]+-|U{15})/' '{for (i=2; i<NF; i+=2) print $i}' file
interestingdata1
interestingdata2