当我执行" ps -ef |时,我收到以下消息grep port"
apache 6215 1 0 11:20 ? 00:00:00 perl /scripts/myscript.pl -sn 4123E -sku HSME01-HW -port 8
有没有办法解析以下内容:
答案 0 :(得分:8)
您可以使用awk
进行过滤和解析:
ps -ef | awk '/[p]ort/ {printf "start time: %s\nsn: %s\nsku: %s\nport: %s\n", $5, $11, $13, $NF}'
正如glenn jackman在评论中指出的那样,过滤字符串中的方括号会阻止表达式在过程列表中匹配过滤字符串本身。
答案 1 :(得分:3)
由于问题被标记为bash
,因此首选使用仅使用bash的解决方案(无awk或perl)...
LINE='apache 6215 1 0 11:20 ? 00:00:00 perl /scripts/myscript.pl -sn 4123E -sku HSME01-HW -port 8'
## Convert string to bash array
ARR=($LINE)
echo "start time (${ARR[4]})"
echo "sn (${ARR[10]})"
echo "sku (${ARR[12]})"
echo "port (${ARR[14]})"
## How to save the value?
START_TIME=${ARR[4]}