2016-10-08 8 views
1

Есть ли простой способ группировать несколько строк, которые соответствуют шаблону в одну строку?Есть ли простой способ группировать несколько строк вывода команды на основе начального и конечного совпадений?

В принципе, выход чего-то списки команд, как:

key1 blah blah = dict { 

    unrelated stuff { 

    } 

    something I actually want to match via grep or something 

    some common end term for key1 I can use as an end pattern match 
} 

x 100 similar keys 

Мой конец игры здесь, в этом конкретном случае раздеться XML-записей, которые имеют определенную запись в них. Я мог бы сделать это (и решить множество других повседневных проблем), если каждая запись была собственной линией вместо многострочной (grep в матчах, sed вне текста после скобки и т. Д.)

что-то вроде:

print multi-line crap | merge beginningpattern endpattern | grep lines now that everything is merged 

в основном команда «слилась» лишит все символы новой строки между каждым новым beginningpattern и endpattern (возможно, поставив новую строку в конце)

+0

Ваш ввод JSON или питон-диктофон? –

ответ

0

AWK и GSUB бы правильно, если Я правильно понимаю ваш вопрос. Например:

required_string=$(cat $i.xml | awk 'BEGIN { x=0 ; y=0} /<yourStartingString>/ { x=1 } /<EndingString>/ {x=0} {if (x==1 && y==1) { gsub(/(.*<grepforwhatyouneed>)|(<endgrep>)/,"");print } } { if(x==1 && y==0) y=1 }')