мульти шаблон в седь-н - PullRequest
       23

мульти шаблон в седь-н

0 голосов
/ 28 августа 2018

Я знаю, что на эту тему задано довольно много вопросов. Но мне нужна помощь в каждом конкретном случае. Когда я пытаюсь поместить более 3 шаблонов в опцию, я получу ошибку, как это ...

sed: -e expression #1, char 24: unknown command: `,'

я только хочу напечатать слова в скобках ..

вот команда sed

sed -n '/QUEUE/,/CURDEPTH/,/DESCR/ {
            s/QUEUE(\(.*\))\(.*TYPE(.*)\)/\1/
            s/QUEUE(\(.*\))/\1/
            s/TYPE(.*).*CURDEPTH(\(.*\))/\1/
            s/CURDEPTH(\(.*\))/\1/
            s/TYPE(.*).*DESCR(\(.*\))/\1/
            s/DESCR(\(.*\))/\1/
         p
       }
    ' | awk '{ if ((NR %2) == 0) { printf("%s\n", $0) } else { printf("%s", $0) } }'

и вывод ...

test.msg.queue   0)                             DESCR(TQ : 001

спасибо ...

пример вывода

1 : dis q(test.msg.queue) CURDEPTH DESCR
AMQ0086: Display Queue details.
   QUEUE(test.msg.queue)                 TYPE(QLOCAL)
   CURDEPTH(0)                             DESCR(TQ : 001)

1 Ответ

0 голосов
/ 28 августа 2018

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

Но sed это не нужно; ты делаешь вещи слишком сложными. Регулярные выражения уже естественным образом обеспечивают сопоставление списка отдельных опций. Вот для чего нужен оператор |:

sed -n '/QUEUE\|CURDEPTH\|DESCR/ {
            s/QUEUE(\(.*\))\(.*TYPE(.*)\)/\1/

...

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