захватить значение между двумя строками с помощью sed? - PullRequest
1 голос
/ 18 мая 2011

У меня есть следующие данные в одной строке:

<a href="#page-metadata-start" class="assistive">Go to start of metadata</a>
<div id="page-metadata-end" class="assistive"></div>

        <fieldset class="hidden parameters">
                        <input type="hidden" title="browsePageTreeMode" value="view">
        </fieldset>

        <div class="wiki-content">
           <p>(openissues)81(/openissues)</p><p>(assignstoday)0(/assignstoday)</p><p>(assignsweek)2(/assignsweek)</p><p>(replyissues)6(/replyissues)</p><p>(wrapissues)26(/wrapissues)</p>
        </div>

Я хотел бы, например, получить значение для "openissues", но я не могу понять, как правильно получить это. Одна из вещей, которые я попробовал, это следующая команда:

sed -n '/(assignstoday)/,/(\/assignstoday)/p' ~/test.txt

Любая помощь?

Ответы [ 2 ]

3 голосов
/ 18 мая 2011
sed 's/.*(openissues)\(.*\)(\/openissues).*/\1/' test.txt

быстрый взлом, чтобы, возможно, удовлетворить ваши отредактированные требования:

sed -n '/openissues/p' test.txt | sed  's/.*(openissues)\(.*\)(\/openissues).*/\1/'

, но регулярные выражения на самом деле не подходят для анализа HTML.

1 голос
/ 18 мая 2011

Я бы попробовал

VALUE=openissues
sed  's@.*('"$VALUE"')\([^(]\+\).*@\1@'

, то есть заменить все, кроме содержимого того, что вы ищете, этим содержимым.

edit: Теперь я вижу ответ Нила, это практическито же самое, прими его.Я оставляю свой ответ для настройки того, какое значение вы хотите извлечь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...