Вывести несколько пар значений ключа в одну строку, используя sed или awk - PullRequest
0 голосов
/ 29 января 2019
My input: ps -ef|grep mysql

    --defaults-file=/xyz/ --basedir=name --datadir=/data  --user=abc--log-error=/log1 --port=1211
    --defaults-file=/mno/ --basedir=anothername --datadir=/data2  --user=pqr --log-error=/log2 --port=1212

Я попробовал следующую команду

ps -ef|grep mysql| awk 'BEGIN {RS=" "}; /--port/' 
output:

--port=1211
--port=1212

Как получить определенную пару ключей с помощью одной команды awk?Вывод должен быть таким

port:1211
base dir:name
log dir:log1

port:1212
base dir:anothername
log dir:log2

1 Ответ

0 голосов
/ 31 января 2019

Не уверен, что ваша версия sed, попробуйте это:

sed -e '/port=/{' -e 'h;s/.*--port=\([0-9]*\)\s*$/port:\1/;x;s/.*--basedir=\([^ ]*\).*--log-error=.\([^ ]*\).*/base dir:\1\nlog dir:\2\n/;H;x}'

--posix проверено работает.

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