LINUX.ORG.RU

Вопрос по sed

 


0

3

Привет всем! В sed не силен, а тут возникла необходимость выдернуть из текстового файла строки, которые находятся между <text> и </text>. Как можно это сделать с помощью sed в одной строке?


Ответ на: комментарий от Zmicier

Это была классика. А конкретно в данном случае регулярными выражениями, впрочем, можно обойтись, но только не базовыми (sed), и даже не расширенными (AWK), а перловскими.

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

разбери http://www.grymoire.com/Unix/Sed.html

пока /<text>/! повторять.

проверка если конец тутже то выкусывание и выхлоп куска и переход на начало . иначе h -ашающая конец строки в холдместоб затем пока /<\/text>/! H-дописывающая строки в холдместо.

иначе (т.е встретили закрывающае) дописывание префикса в холдместо выкусывание из строки всего включая и закрывающий(первый) тег. печать холдместа и его(холда) опустошение, и возобновление(вдруг открывающий в этой же строке) скрипта на обрезанной стоке.

зы. скриптом будет операторов 10 символов гдето 70 - удачи.

qulinxao ★★☆
()

спасибо за ответы, наверное есть более общий способ получить результат, но в данный момент работает вот в таком виде простом виде. В файле xmlfile нет вложенных <text> и </text>

$sed -f file.sed xmlfile $cat file.sed s/.*<text>// s/<\/text>.*//p

dum71
() автор топика
Ответ на: комментарий от anonymous

Пробую, ввожу $cat xmlfile | sed -n '/<text>/,/<\/text>/p' | sed '1d; $d'

Ничего не выводит, тестовый xmlfile выгляди так

<?xml version=«1.0» encoding=«utf-8»?>

<Translation code=«200» lang=«en-ru»><text>мир</text>

</Translation>

dum71
() автор топика
Ответ на: комментарий от Zmicier

А следующий комментарий не осилил прочитать, да

zolden ★★★★★
()

Ken Thompson, ‘‘Regular Expression Search Algorithm’’, CACM 11(6), June 1968, pp. 419-422

ps. на торентах есть полный сборник CACM с vol1(1957) till ...

pps. где то с середины 80ых - микропроцессорное и прочий ооп-евангелизм но до вполне адекватный кладезь 3-5 страничных жемчужин как вышеуказаный код синтезирующий по входу исполнимый код.

qulinxao ★★☆
()

http://www.dlsi.ua.es/~mlf/nnafmc/papers/kleene56representation.pdf

даже ✂✁☎✄✆✂✁✆✝✞✁☎✟✡✠☞☛✌✠✆✍✏✎✑✟✒✎✑✓✔✁✖✕✗✁✘✟✡✠✙✝✚✍✛✟✜✟✢✁☎✣✕✗✁✤✟✥✁✘✠✦✝✧☛★✟✢✩ ✓☞✍✛✟✢✍✛✠✆✁✪☛✑✫✥✠✙✎✑✬✭☛✌✠☞☛★✮ ✯✱✰✳✲✖✰✳✴✘✵✷✶✛✶✹✸✺✶ т.е. Representation of events in nerv nets and finite automata by S.C. Kleene

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