Está en la página 1de 7

Instituto Profesional DUOC UC Escuela de Informtica y Telecomunicaciones

NOMBRE EXPERIENCIA: Introduccin a AWK UNIDAD DE APRENDIZAJE: Programacin avanzada de SCRIPTS

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

Lnea Sistemas Operativos Jaime lvarez M. Semestre 1 2011

Instituto Profesional DUOC UC Escuela de Informtica y Telecomunicaciones

y otra ms: awk -F: '$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:

Lnea Sistemas Operativos Jaime lvarez M. Semestre 1 2011

Instituto Profesional DUOC UC Escuela de Informtica y Telecomunicaciones

y otra ms: awk F: '{ $1=="Francisco" { print $0 }' personas.txt apellido sea Prez del archivo

8.-

Mostrar TODOS los registros cuyo personas.txt.

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

correspondiente nmero de registro. awk F: '{ print NR,$0 }' personas.txt

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.

Lnea Sistemas Operativos Jaime lvarez M. Semestre 1 2011

Instituto Profesional DUOC UC Escuela de Informtica y Telecomunicaciones

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.-

Mostrar la hora del sistema. date | awk '{ print $4 }'

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 }'

Lnea Sistemas Operativos Jaime lvarez M. Semestre 1 2011

Instituto Profesional DUOC UC Escuela de Informtica y Telecomunicaciones

18.-

Mostrar el listado de todos los archivos NO vacos del directorio actual. ls -l | awk '$5>0'

19.-

Listar el contenido de empieza con "a".

los archivos del directorio actual cuyo nombre

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

Lnea Sistemas Operativos Jaime lvarez M. Semestre 1 2011

Instituto Profesional DUOC UC Escuela de Informtica y Telecomunicaciones

24.-

Mostrar el listado de archivos del directorio actual en maysculas ls awk '{ print toupper($1) }'

Los archivos de log de RHEL, y de prcticamente TODOS los Linux,

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.-

Mostrar las ejecuciones del comando su awk '/su:/ print}' /var/log/auth.log

Lnea Sistemas Operativos Jaime lvarez M. Semestre 1 2011

Instituto Profesional DUOC UC Escuela de Informtica y Telecomunicaciones

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}

Lnea Sistemas Operativos Jaime lvarez M. Semestre 1 2011

También podría gustarte