2015-09-09 3 views
0

Я пытаюсь получить значение между двумя строками, которые присутствуют несколько раз в одной строке.Извлечь значение между двумя строками с помощью sed или awk

вот что я получил:

time="1441491171" <DISP>something</DISP><DISP>stuff</DISP><DISP>possible</DISP> 

порядок этих строк, как это может измениться при наличии дополнительных строк ...

Я пытаюсь получить эти значения ниже:

"1441491171" something stuff possible 

Большое спасибо за помощь, AL.

ответ

2

Вы можете использовать следующую sed команду:

sed 's/time=//;s/<\/*DISP>/ /g' 

Эти две команды, разделенные точкой с запятой:

  • s/time=// удаляет time= префикс
  • s/<\/*DISP>/ /g удаляет теги <DISP> или </DISP> пробелом
+0

Большое спасибо :) – user2335924

+0

Вас! – hek2mgl

0

Иная ПОДХОД выбора матчей вместо удаления не хотел строки:

$ grep -oP 'time=\K"\d+"|(?<=DISP>)\w+(?=</DISP)' file 
"1441491171" 
something 
stuff 
possible 

$ grep -oP 'time=\K"\d+"|(?<=DISP>)\w+(?=</DISP)' file |tr '\n' ' ' 
"1441491171" something stuff possible