Chuleta 00 Sumar con AWK
Inauguramos sección donde iré poniendo comandos más o menos útiles a modo de chuleta. No os penséis que es por vosotros.. es por mí, para que no se me olviden, que ya tengo una edad.
Vamos a contar (sumar) el resultado de un comando con AWK, esto es, por ejemplo, los tamaños de MaxMetaspaceSize de las múltiples javas que corren en una máquina.
Empezamos, lo que queremos sumar -XX:MaxMetaspaceSize=100m ocupa la posición 15, y viene acompañado por una m a la derecha (megas).
ps -ef | grep java | awk '{print $15}' | cut -d= -f2 | sed 's/m//'
Así que a esta salida de comando añadimos nuestro sumatorio awk:
ps -ef | grep java | awk '{print $15}' | cut -d= -f2 | sed 's/m//' | awk '{total += $NF} END { print total }
¿Qué es lo que hace este churro?
ps -ef nos lista todos los procesos del servidor en modo extendido.
grep java nos filta los procesos que contienen java (mmm nota mental.. afinar más)
awk '{print $15}' nos corta la lista anterior por el campo 15, que es justo ese MaxMetaspaceSize que queremos
cut -d= -f2 nos corta la salida usando el = como separador, y nos da la parte de la derecha, que termina en una m (mmm otra nota mental.. ¿y si mezcla m's con g's con k's?? )
sed 's/m//' quita esa m del final y la reemplaza por nada
awk '{total += $NF} END { print total } y esta la que vale, interpreta línea a linea el resultado y suma con ese += los valores de cada línea que se acumulan en la variable Built-IN $NF, que contiene únicamente la última columna de cada registro, nos imprime el total acumulado.
No puedo cerrar esta primera entrada sin recomendar esta lectura necesaria para todos los enamorados de la línea de comandos: la lectura de este ensayo sobre la línea de comandos.