2013-11-06 2 views
3

Я пытаюсь извлечь текст из файла между < и >, но только на строку, начинающуюся с другим конкретным рисунком.SED найти шаблон на линии с другим рисунком

Таким образом, в файле, который выглядит как:

XXX Something here 
XXX Something more here 
XXX <\Lines like this are a problem> 
ZZZ something <\This is the text I need> 
XXX Don't need any of this 

Я хотел бы напечатать только <\This is the text I need>.

Если я

sed -n '/^ZZZ/p' FILENAME 

тянет правильные строки мне нужно смотреть, но, очевидно, выводит всю строку.

sed -n '/<\/,/>/p' FILENAME prints way too much. 

Я смотрел в группировке и попытался

sed -n '/^ZZZ/{/<\/,/>/} FILENAME 

, но это, кажется, не работает.

Любые предложения? Они будут высоко оценены.

(Извинения для форматирования, никогда не отвечал на здесь раньше)

ответ

6
sed -n '/^ZZZ/ { s/^.*\(<.*>\).*$/\1/p }' 
+0

Ничего себе это было быстро! Спасибо, он работает отлично. – user2962390

1

Если он не должен быть СЭД и у вас есть достаточно свежая Grep, вы можете использовать опцию Grep в -o, как в

grep '^ZZZ' | grep -o '<[^>]*>' 
+0

Пошел с парнем выше из-за sed, но все равно спасибо. Я бы дал вам голос, но кажется, что я слишком новичок. – user2962390

0

awk версия

awk -F"<|>" '/^ZZZ/ {print "<"$2">"}' file 
<\This is the text I need> 
Смежные вопросы