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-1and的正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

相关内容