2014-02-13 4 views
0

У меня есть эта команда, которая будет назначать var match из вывода между строкой 1 и строкой 2, проблема в том, что существует несколько совпадений, и я хочу, чтобы только первый был назначен var , Как это возможно?Sed для совпадения первого вхождения между двумя строками

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

Труба это 'head'? 'head -1'? – devnull

+0

Трубопроводы к «головным» работам, у меня не было рефлекса трубопроводов, и я сосредоточился только на sed, так как они говорят, что трубопровод всегда ваш друг! – Hobbit1919

ответ

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

Это может работать для вас (GNU СЭД):

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

, но это возвращает строку, соответствующую $ String1

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

это вернуть первый встречаемость группы строк

Смежные вопросы