LINUX.ORG.RU
решено ФорумAdmin

[sed] Подскажите выражение

 


0

0

Хочу вывести строку между двумя выражениями. Допустим:

<pattern>Строка, которую нужно вывести</pattern>
Как такое сделать посредством sed?

★★★★★

Последнее исправление: ostin (всего исправлений: 1)

sed 's/.*<pattern>\(.*\)<\/pattern>.*/\1/' file
edigaryev ★★★★★
()

sed 's#.*<pattern>\(.*\)</pattern>.*#\1#'

Nao ★★★★★
()

Уточните - в строке еще что-то может быть? Вообще тут лучше использовать awk:

$ echo '<pattern>Строка, которую нужно вывести</pattern>' | awk -F '<pattern>' '{print $2}' | awk -F '</pattern>' '{print $1}'
Строка, которую нужно вывести

gserg ★★
()
Ответ на: комментарий от gserg

Да, я сразу не подумал, мне фактически нужно, чтобы остальное все обрезалось, Ваш пример с awk, судя по всему, подходит лучше. Спасибо.

ostin ★★★★★
() автор топика
Ответ на: комментарий от gserg

На одном awk'e можно сэкономить awk -F '<pattern>|</pattern>' '{print $2}'

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.