sed 추출에는 종료 모드에서 여러 옵션이 있습니다

sed 추출에는 종료 모드에서 여러 옵션이 있습니다

명령에서 일부 출력을 얻고 있는데 출력에서 ​​두 패턴 사이의 텍스트를 추출해야 합니다. 시작 모드가 고정되었습니다. 그러나 최종 형식은 두 가지 형식(예: word2-1 및 word2-2) 중 하나일 수 있습니다.

sed단일 명령으로 이를 지정할 수 있는 방법이 있습니까 ?

나는 노력했다

sed -n "/Word1/,/(word2-1|word2-2)/p"
sed -n "/Word1/,/word2-1|word2-2/p"
sed -n "/Word1/,/word2-1\|word2-2/p"
sed -n "/Word1/,/[word2-1|word2-2]/p"

답변1

정규식 일치는 word2-1및 입니다 . 접미사가 두 개 이상의 문자를 포함하는 경우에는 다른 문자를 사용하십시오.word2-2word2-[12]word2-\(first\|second\)

세 번째 정규식은 동일한 문자열과 일치하며 더 많이 반복됩니다.

답변2

세 번째 옵션은 작동하며 의견에 언급한 대로 첫 번째 일치 항목만 추출합니다.

$ cat > file << 'EOF'
> foo
> bar
> Word1
> foo
> bar
> word2-2
> foo
> bar
> word2-1
> EOF
$ sed -n "/Word1/,/word2-1\|word2-2/p" file
Word1
foo
bar
word2-2

관련 정보