简体   繁体   English

使用 sed 或 awk 在单行中打印多个键值对

[英]Print Multiple key value pair in single line using sed or awk

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

I tried following command我尝试了以下命令

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

--port=1211
--port=1212

How do i get specific key valur pair using a single awk command?如何使用单个 awk 命令获取特定的键值对? Output should be like this输出应该是这样的

port:1211
base dir:name
log dir:log1

port:1212
base dir:anothername
log dir:log2

Not sure your sed version, try this:不确定你的 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 tested working. --posix测试工作正常。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM