10.07.2015 Views

Manual - Grupo de Geomorfología, Hidrogeología y Medio Ambiente

Manual - Grupo de Geomorfología, Hidrogeología y Medio Ambiente

Manual - Grupo de Geomorfología, Hidrogeología y Medio Ambiente

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Conceptos <strong>de</strong> editores fuera <strong>de</strong> líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html6 <strong>de</strong> 7 07/09/2005 8:03[shrek@pantano]$ ls -l | awk '{ print NR" "$1" "$9}'1 total2 -rw-rw-r-- 1467683 -rw-rw-r-- Bienvenidos4 -rw-rw-r-- Bienv5 -rw-rw-r-- authkey.file6 drwxr-xr-x Desktop7 -rw-rw-r-- LUGRo8 drwxrwxr-x Linux9 -rw-rw-r-- Listado10 -rw-rw-r-- Lo11 drwx------ Mail. . .49 -rw-rw-r-- pgaccess-report.ps50 -rw-rw-r-- sed51 -rw-rw-r-- sed.zip52 -rw-rw-r-- smtptel.htm53 -rw-rw-r-- vickyComo verán, en esta ocasión la variable NR fue llevando la cuenta <strong>de</strong> los registros que fueron pasandopor el awk. De esta forma se podrá <strong>de</strong>cirle al awk que me muestre <strong>de</strong> los registros 5 al 10 solamente. scrExisten muchas más variables en el awk que son <strong>de</strong> extrema utilidad. Por ejemplo, en el caso anteriorsabíamos que el ultimo campo estaba en la posición número 9, pero ¿que ocurre si no sabemos la posición<strong>de</strong>l último campo o esta varia? Para esto esta la variable NF que lleva la cuenta <strong>de</strong> la cantidad <strong>de</strong> campos<strong>de</strong> cada registro. Por ello en lugar <strong>de</strong> la anterior forma podrimos poner:[shrek@pantano:~]$ ls -l | awk '{ print NR" "$1" "$NF}'y obtendríamos idénticos resultados. Pero un momento, aquí hay algo raro. La variable NR no tiene elsigno $, en cambio la variable NF si lo tiene. Esto esta dado así para que no se reemplazado por el awk.Por ejemplo si hubiésemos puesto la variable NF sin signo $ el resultado seria.[shrek@pantano:~]$ ls -l | awk '{ print NR" "$1" "NF}'1 total 22 -rw-rw-r-- 93 -rw-rw-r-- 114 -rw-rw-r-- 115 -rw-rw-r-- 116 drwxr-xr-x 9. . .Lo que nos esta mostrando no es el último campo, sino la cantidad <strong>de</strong> campos que ese registro tiene. Alagregarle el signo $ se reemplazara con el número <strong>de</strong>l último campo y ese campo el que será mostrado.Esto es así para todas las variables integradas. El awk pue<strong>de</strong> ser usado no-solo en una línea. Podrimosusarlo también como cualquier otro lenguaje para realizar múltiples tareas en una línea o realizar algoantes <strong>de</strong> comenzar la lectura y otra <strong>de</strong>spués. Para <strong>de</strong>marcar el código se utiliza los pares BEGIN-END.Todo lo que aparece <strong>de</strong>spués <strong>de</strong> la palabra BEGIN, pero en el mismo renglón, se realiza antes <strong>de</strong> quecomience el ciclo. Cualquier cosa que este <strong>de</strong>spués <strong>de</strong> END se realiza <strong>de</strong>spués <strong>de</strong> que se haya leído laúltima línea y cerrado el ciclo. Estas líneas tendrán que estar en un archivo que será utilizado por el awkpara procesar en este ejemplo al archivo /etc/passwd. Un ejemplo seria el siguiente:BEGIN { FS=":"}{ printf"Nombre Completo: %s\n",$5 }{ printf"Nombre <strong>de</strong> Usuario: %s\n",$1}{ printf"UID: %i,GUID: %i\n\n",$3,$4 }END { printf "\n\nTotal <strong>de</strong> usuarios: %d \n\n", NR}Este pequeño programa realizado con el vi será guardado en el archivo awk.src, el nombre se lo damosnosotros, y nos servirá para mostrar algunos datos <strong>de</strong>l /etc/passwd mas <strong>de</strong>talladamente. La forma <strong>de</strong>ejecutarlo es a través <strong>de</strong>l modificado "-f" don<strong>de</strong> le <strong>de</strong>cimos al awk que a continuación le pasaremos unarchivo con el programa que tiene que usar para procesar el /etc/passwd.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!