我从命令中获得一些输出,我必须从输出中提取两个模式之间的文本。启动模式是固定的。但最终格式可以是两种格式之一(假设 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
and的正word2-2
则表达式是word2-[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