Está en la página 1de 3

Ejercicios AWK

Quitar las lneas vacas de un archivo:


awk '!/^$/ {}' archivo

Mostrar el login de los usuarios que estn conectados:


w | awk 'NR>2 {print $1}'
Mostrar el login y el nombre completo de los usuarios cuyo login empieza y termina en a:
awk 'BEGIN {FS=":"} /^a[^:]*a:/ {print $1,$5}' /etc/passwd

Borrar solo archivos (puede hacerse con rm nada ms, pero qu pasa con alias como 'rm -r')
ls -l * | grep -v drwx | awk '{print "rm "$9}' | sh

Imprime slo los nombres de usuarios del archivo /etc/passwd


awk F: '{ print $1 }' /etc/passwd

Imprimir todas las lneas del archivo con nmero de lnea


awk '{ print NR $0 }'

Escribir un comando AWK que cumpla la misma funcin que wc l archivo:


awk 'END { print NR }' archivo

Mostrar slo los nombres y los tamaos de los archivos del directorio actual:
ls -l | awk '{ print $8 ":" $5 }'

Mostrar slo los nombres y tamaos de archivos .txt:


# ls -l | awk '$8 ~ /\.txt/ { print $8 ":" $5 }'

Imprimir las lneas de un archivo que tengan ms de 4 campos/columnas:


# awk 'NF > 4 {print}' archivo

Imprimir el ltimo campo de cada lnea de un archivo:


awk '{ print $NF }' archivo

Imprimir los campos de cada registro o lnea de un archivo en orden inverso:


awk '{ for (i = NF; i > 0; --i) print $i }' fichero

Imprimir ltima lnea de un archivo:


awk '{line = $0} END {print line}' archivo

Imprimir las primeras 10 lneas de un archivo:


awk 'NR < 10 {print}' archivo

Mostrar todas las lneas de un archivo que contengan una determinada cadena
awk '/cadena/ { print }' archivo

Mostrar todas las lneas de un archivo que NO contengan una determinada cadena
awk '! /cadena/ { print }' archivo

Mostrar en pantalla los campos 1 y 3 del archivo /etc/passwd:


awk -F":" '{ print $1 "\t" $3 }' /etc/passwd

Calcular la suma y el promedio de todas las primeras columnas del archivo:


awk '{ suma += $1 } END { print "suma:", s, " media:", s/NR }' archivo

Imprimir los usuarios ordenados y su hora de conexin (primero este campo).


who | awk '{print $5, $1}' | sort

Imprimir un nmero decimal reservando espacio para 4 dgitos (NR = nmero de lnea
actual), un string ($0 = la lnea completa), y salto de lnea.
awk '{printf "%4d %s\n", NR, $0}' archivo

También podría gustarte