Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guía AWK PAD350RR
Guía AWK PAD350RR
Para los siguientes ejercicios de AWK, recordar el formato del archivo de contraseas /etc/passwd: login_name :x:UID:GID:comentarios:directorio_home:shell y que para efectos de AWK la numeracin de campos es la siguiente:
1.-
Mostrar los nombres de login (correspondientes al primer campo o campo 1) de TODOS los usuarios del archivo de contraseas /etc/passwd. awk -F: '{ print $1}' /etc/passwd
2.-
Mostrar los nombres de login, directorios propios y shell de TODOS los usuarios del archivo de contraseas /etc/passwd (correspondientes a los campos 1, 6 y 7). Mostrarlos separados por "--". awk -F: -v OFS=" -- " '{ print $1,$6,$7 }' /etc/passwd otra forma: awk -F: '{ print $1," -- ",$6," -- ",$7 }' /etc/passwd
3.-
Mostrar los nombres de login y directorios propios (correspondientes a los campos 1 y 6) del archivo de contraseas /etc/passwd de aquellos usuarios cuyo nombre de login empieza con "a". awk -F: '/^a/ print $1,$6 }' /etc/passwd otra forma: awk -F: '{ if ($1~/^a/) print $1,$6 }' /etc/passwd
4.-
Mostrar solo los registros de usuarios del archivo de contraseas /etc/passwd que utilizan el shell csh. awk -F : '$7~"csh" { print $0 }' /etc/passwd
5.-
Mostrar solo los registros de usuarios sin privilegios (usuarios con UID >= 500) del sistema. awk -F : '$3>=500 {print $0}' /etc/passwd
6.-
Mostrar los registros de usuarios del archivo de contraseas /etc/passwd para aquellos usuarios cuyo nombre de login empieza con "a" y que utilizan el Shell Bash. awk -F : '$1~/^a/ && $7~"bash" {print $0}' /etc/passwd otra forma: awk -F : '$1~/^a/ && $7=="/bin/bash" {print $0}' /etc/passwd
Para los siguientes ejercicios considere un archivo delimitado, llamado personas.txt, con el siguiente formato: nombre:apellido:nmero un registro en este archivo tendra, por ejemplo, Juan:Perez:25 7.Mostrar TODOS los registros cuyo personas.txt. awk F: '/^Francisco/ { print $0 }' personas.txt otra forma: awk F: '{ if ($1=="Francisco") print $0}' personas.txt nombre sea Francisco del archivo la siguiente forma:
y otra ms: awk F: '{ $1=="Francisco" { print $0 }' personas.txt apellido sea Prez del archivo
8.-
awk F: '/Perez/ { print $0 }' personas.txt otra forma: awk F: '{ if ($2=="Perez") print $0}' personas.txt y otra ms: awk F: '{ $2=="Perez" { print $0 }' personas.txt
9.-
Imprimir la cantidad de registros del archivo personas.txt cuyo nombre sea Juan. awk F: '{ if ($1=="Juan") x++} END { print x}' personas.txt otra forma: awk F: '$1=="Juan" { x++ } END { print x }' personas.txt y otra ms: awk F: 'BEGIN {x=0} { if ($1=="Juan") x++ }; END { print x }' personas.txt
10.-
Imprimir
TODOS
los
registros
del
archivo
personas.txt
con
su
AWK es extremadamente til a la hora de procesar bsquedas en archivos y flujos de datos, dentro de estos ltimos podemos considerar la salida (o el output) de comandos como el ls, who, date, ps, entre muchsimos ms. Es importante recordar aqu, que el delimitador por defecto de AWK es el espacio en blanco.
11.-
Mostrar los usuarios actualmente conectados al sistema conexin. who | awk '{ print $1,$4 }'
y su hora de
12.-
Mostrar la fecha en formato da mes ao. date | awk '{ print $3,$2,$6 }'
13.-
14.-
Mostrar TODOS los archivos del directorio actual cuyo nombre empieza con "a". ls | awk '/^a/' otra forma: ls | awk '$1~/^k/ { print $1 }'
15.-
Mostrar los permisos ($1) y nombre de los archivos ($9) del directorio actual. ls -l | awk '{ print $1,$9 }' Mostrar los campos del 1 al 5 del listado que proporciona ls l. ls -l | awk '{ for (x=1; x<=5; x++) { printf "%s ", $x } printf "\n" }'
16.-
17.-
Mostrar el listado de todos los archivos vacos del directorio actual. ls -l | awk '$5==0' otra forma: ls | awk '$5==0 { print $9 }'
18.-
Mostrar el listado de todos los archivos NO vacos del directorio actual. ls -l | awk '$5>0'
19.-
ls | awk '{ /^a/ { print $1 }' | awk '{ print "cat "$1 }' | bash otra forma: ls | awk '{ if ($1~/^a/) print $1 }' | awk '{ print "cat "$1 }' | bash
20.-
Sumar los tamaos de todos los archivos del directorio actual ls -l | awk '{ sum+=$5} END {print sum}'
21.-
Sumar
los
tamaos
de
todos
los
archivos
del
directorio
actual
pertenecientes al usuario alumno ls -l | awk '{ if ($3~"alumno") sum+=$5} END {print sum}' otra forma: ls -l | awk '$3=="alumno" { sum+=$5} END {print sum}'
22.-
Mostrar un listado de TODAS las carpetas o sub-directorios del directorio actual ls -l awk '/^d/ { print $1," ",$9 }' otra forma: ls -l awk '$1~/^d/ { print $1," ",$9 }'
23.-
Borrar solo los archivos del directorio actual ls -l grep -v drwx awk '{ print "rm "$9 }' bash otra forma: ls -l awk '$1!~/^drwx/ { print $9 }' xargs rm
24.-
Mostrar el listado de archivos del directorio actual en maysculas ls awk '{ print toupper($1) }'
se
encuentran en el directorio /var/log. Algunos de estos archivos son archivos de texto y por lo tanto pueden ser consultados directamente con AWK (o grep/sed), otros, en cambio, son archivos binarios y se consultan a travs de un comando Linux, para luego procesar la salida de dicho comando con AWK.
25.-
Mostrar las caractersticas de la CPU de la mquina dmesg | awk '/CPU/ {print $0}'
26.-
Listar el nombre de los usuarios que NUNCA se han conectado al sistema lastlog | awk '/**Nunca ha entrado**/ { print $1}'
27.-
Mostrar las lneas con Invalid user y el total de ellas del archivo de log /var/log/secure awk '/Invalid user/ { count++; print $0 } END { print count }' /var/log/secure
28.-
Mostrar los ingresos al sistema entre el 1 y 5 de Junio last | awk '$5 == "Jun" && ($6 >= 1 && $6 <= 5)'
29.-
30.-
Mostrar todos los intentos de conexin al sistema fallidos awk '/FAILED LOGIN/ {print $0}' /var/log/secure
31.-
Matar TODOS los procesos de un determinado tipo (en este ejemplo vamos a matar el proceso asociado a la ejecucin del editor vi) ps ax | grep vi | grep v grep | awk '{ print "kill -9 "$1}' | bash
32.-
Mostrar la cantidad de usuarios en el sistema en este instante w | awk 'BEGIN { cont=0 } NR>2 { cont++ } END { print cont} otra forma: w | awk 'NR>2 { cont++ } END { print cont}