Linux/Unix Shell Scripting - Shell script cut ultimo campo

   
Vista:

Shell script cut ultimo campo

Publicado por Ruben (4 intervenciones) el 31/01/2011 08:34:38
Buenos días

Tengo un problema, simple, pero de difícil solución.

Quiero hacer un script, que en un momento dado, muestre el pid de unos procesos java, y muestre para cada proceso, el último valor del proceso.

O sea, si pongo ps -fade | grep java, me sale al final, la sentencia java con un montón de argumentos. A mi me interesa el último argumento.

He probado con cut, con awk, y sólo me muestra ordenado de principio a fin, pero el problema es que este último valor, no esta siempre en la misma columna, unas veces esta en la columna 44, otras en la 46... pero siempre la última.

¿¿Hay alguna forma de hacer eso, que me muestre pid y último valor de jvm, sin tener que crear un script intermedio que me capture cada valor, hasta llegar al último???

Con lo fácil que sería algo tal que así:

ps -fade | grep java | grep -v grep | cut -d' ' -f-1

ese -f-1, para mostrar el campo 1, pero desde el final...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Shell script cut ultimo campo

Publicado por Ruben (4 intervenciones) el 31/01/2011 11:19:48
Al final he conseguido hacerlo:

ultvalor=`ps -fade | grep $pid | grep -v grep | wc -w | tr -d ' '`
servidor=`ps -fade | grep $pid | grep -v grep | awk -v valor=$ultvalor '{print $valor}'`
echo $pid $servidor

En la primera linea, obtenemos el numero de palabras, asi sabemos cuantos argumentos hay en total.
En la segunda linea, mostramos mediante awk, el campo correspondiente al valor que habiamos obtenido antes.
La tercera linea muestra el pid y el ultimo valor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Shell script cut ultimo campo

Publicado por DaNiElOs (5 intervenciones) el 03/03/2011 12:30:46
efectiviwonder Ruben, pero bueno ya que utilizas awk si sabes que siempre el valor esta en el último campo y para evitar utilizar awk -v que en versiones anteriores de ksh no rula, y evitar utilizar un comando mas grep por cuestiones de eficiencia que aqui ni te importa... pero bueno a lo que voy puedes utilzar :

servidor=`ps -fade | grep $pid | awk '{print $NF}'`

NF se utiliza para almacenar el valor del último campo del registro...
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Shell script cut ultimo campo

Publicado por Isaac (5 intervenciones) el 21/06/2011 20:44:15
DaNiElOs, yo personalmente usaria:

servidor=$(ps -fade | awk "/$pid/"'{print $NF}')

y evitas la ejecución de otro grep más.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar