Как получить значение из строки в Unix - PullRequest
0 голосов
/ 25 августа 2011

Предположим, у меня есть следующие строки:

<Instance name="cd" id="sa1">
<work id="23" permission="r">

Я хочу напечатать значение идентификатора, где поле идентификатора не является постоянным.

1 Ответ

1 голос
/ 25 августа 2011

Сложно дать подсказку, если не сделает это за вас . Но если предположить, что ваши реальные потребности более сложны, чем вы описываете, то, возможно, какое-то обучение может произойти при применении этого ответа.

Grep не настолько мощен, чтобы выполнять работу, которую вы описываете, хотя он может быть полезен в виде линии для выбора данных с большей «зернистостью». Если ваш файл имеет один тег на строку, как показано в примере, вы можете использовать grep для фильтрации только тегов Instance или work.

grep Instance | program to extract id val

или

grep work| program to extract id val

Чтобы извлечь значение, вам нужно нечто более мощное, чем grep. Предполагая, что значение заключено в двойные кавычки и не содержит вложенных кавычек; и что нет атрибутов с одинаковыми именами, которые могли бы запутать выражение, эта магия sed должна помочь.

sed 's/.*id="\([^"]*\)".*/\1/'

Если любое из вышеприведенных предположений неверно, выражение должно быть более сложным.

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