GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo restar filas (líneas) con AWK

También puedes hacer esto usando awk , paste y bc . Encuentro este enfoque más fácil de recordar, la sintaxis de awk siempre requiere que mire las cosas para confirmar.

NOTA: Este enfoque tiene la ventaja de poder lidiar con múltiples líneas de salida, restando los números 2, 3, 4, etc. del primero.

$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
    awk '{print $2}' | paste -sd- - | bc
7513404

Detalles

Lo anterior usa awk para seleccionar la columna que contiene los números que queremos restar.

$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
    awk '{print $2}'
7969084
408432

Luego usamos paste para combinar estos 2 valores y agregar el signo menos entre ellos.

$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
    awk '{print $2}'| paste -sd- -
7969084-346660

Cuando le pasamos esto a bc realiza el cálculo.

$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
    awk '{print $2}'| paste -sd- - | bc
7513404

La solución puramente awk, sin comandos cat o grep redundantes:

awk '/MemTotal/ {TOT=$2} /MemFree/ {FREE=$2} END {printf("%d kB Used\n", TOT-FREE)}' /proc/meminfo

Veo que awk_FTW se me adelantó, pero pensé que formatear la salida podría ser bueno.


Prueba esto:

grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk 'NR==1{s=$2;next}{s-=$2}END{print s}'

Linux
  1. ¿Cómo contar líneas en un documento?

  2. sed unir líneas

  3. ¿Cómo rellenar un archivo con FF usando dd?

  4. ¿Cómo truncar el archivo por líneas?

  5. ¿Cómo reemplazar el contenido de una columna específica con awk?

Comando AWK en Linux con ejemplos

Cómo eliminar líneas en Vim / Vi

Cómo integrar ONLYOFFICE 9.6 con WordPress

Cómo asegurar servidores Linux con SE Linux

¿Cómo seguir la salida -f con colores usando solo Awk y mostrar el resto de la salida?

Cómo crear un comercio electrónico con Magento