name - ps linux
AnĂ¡lisis de salida de ps y grep en shell (2)
Dado que la pregunta está etiquetada como bash
, se prefieren las soluciones bash-only (sin awk ni 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]}
Recibo el siguiente mensaje cuando hago un "ps -ef | grep port"
apache 6215 1 0 11:20 ? 00:00:00 perl /scripts/myscript.pl -sn 4123E -sku HSME01-HW -port 8
¿Hay alguna manera de analizar lo siguiente?
- hora de inicio (11:20)
- sn (4123E)
- sku (HSME01-HW)
- puerto (8)
Puede usar awk
para filtrar y analizar:
ps -ef | awk ''/[p]ort/ {printf "start time: %s/nsn: %s/nsku: %s/nport: %s/n", $5, $11, $13, $NF}''
Como glenn jackman señaló en los comentarios, los corchetes en la cadena de filtro impiden que la expresión coincida con la cadena de filtro en la lista de procesos.