Sed匹配两个字符串之间的第一次出现

时间:2014-02-13 08:23:20

标签: bash shell sed

我有这个命令,它将从string1和string2之间的输出分配给var,问题是有多个匹配可能,我想只将第一个分配给var。 怎么可能?

var=$(echo "$OUTPUT" | sed -n '/"$string1"/,/"$string2"/p')

3 个答案:

答案 0 :(得分:0)

sed -n '/"$string1"/,/"$string2"/{:l p;n;/"$string2"/{p;Q};b l}'

答案 1 :(得分:0)

这可能适合你(GNU sed):

var=$(<<<"$OUTPUT" sed '/'"$string1"'/,/'"$string2"'/!d;/'"$string2"'/q')

答案 2 :(得分:0)

var=$(echo "$OUTPUT" | sed -n '/"$string1"/,/"$string2"/ {p;q}')

但是返回对应于$ String1

的字符串
var=$(echo "$OUTPUT" | sed -n '/"$string1"/,/"$string2"/ {H;/"$string2"/ {p;q}')

这将返回第一个出现的行