Académique Documents
Professionnel Documents
Culture Documents
Ingeniería de sistemas
Sistemas Operativos
En este informe se explicará cómo se pueden aplicar muchos de los comandos utilizados en bash, awk y perl para la
creación de un programa que cumpla con los parámetros establecidos previamente y que pueda ser comprobado
mediante su ejecución desde Linux.
Curso: G1
Objetivos específicos:
Construir un programa a partir de los comandos básicos de awk
Construir un programa a partir de los comandos utilizados en perl
Conocer nuevos comandos para la generación programas en perl y awk.
Marco teórico:
¿Que es bash?
Es un programa que permite ejecutar las instrucciones que nosotros introduzcamos ya sea vía teclado o mediante los scripts que creemos.
Es decir, el shell tiene una interfaz de texto que funciona a medio camino entre los usuarios y el kernel de Linux.
Historia
Bash quiere decir “Bourne Again Shell” y es una derivacion del sh “Bourne Shell”. El sh es el shell utilizado por los equipos Unix y fue
inventado por Steve Bourne en los años 70.
La sintaxis de los comandos de el bash tiene en gran parte compatibilidad con sh. Además incluye otra serie de recursos de otros shell como
csh(C shell) y ksh(Korn shell) como son el historial de los comandos introducidos o la variable $RANDOM (variable que genera un número
aleatorio) entre otras cosas.
Sintaxis de bash
La sintaxis de órdenes de bash es un superconjunto de instrucciones basadas en la sintaxis del intérprete Bourne. La especificación definitiva
de la sintaxis de órdenes de bash, puede encontrarse en el bash Reference Manual distribuido por el proyecto GNU. Esta sección destaca
algunas de sus únicas características.
Ejemplo:
$ man -k directorio (Muestra el manual del comando que le indiquemos)
¿Qué es awk?
AWK es un lenguaje de programación diseñado para procesar datos basados en texto, ya sean ficheros o flujos de datos. El nombre AWK
deriva de las iniciales de los apellidos de sus autores: Alfred Aho, Peter Weinberger, y Brian Kernighan. awk, cuando está escrito todo en
minúsculas, hace referencia al programa de Unix o Plan 9 que interpreta programas escritos en el lenguaje de programación AWK.
Utilidad:
Está especialmente diseñado para leer y procesar archivos de texto por lo que resulta muy útil su uso combinado con utras utilidades del
sistema operativo.
Comandos de awk:
Los comandos de AWK son las declaraciones sustituidas por acción en los ejemplos anteriores. Los comandos de AWK pueden incluir
llamadas a funciones, asignación de variables, cálculos, o cualquier combinación de estas. AWK contiene soporte propio para muchas
funciones; muchas otras son provistas por las distintas versiones de AWK. Incluso algunas versiones soportan la inclusión de librerías
dinámicamente enlazadas, que pueden proveer aún más funciones.
Ejemplo:
#!/usr/bin/awk -f
BEGIN { print "Hello, world!"; exit }
¿Que es perl?
Perl es un lenguaje de programación muy utilizado para construir aplicaciones CGI para el web. Perl es un acrónimo de Practical Extracting
and Reporting Languaje, que viene a indicar que se trata de un lenguaje de programación muy práctico para extraer información de archivos
de texto y generar informes a partir del contendido de los ficheros.
¿PARA QUE SIRVE?
Aplicaciones del lenguaje Perl Prácticamente, sirve para todo. Todas las tareas de administración de UNIX se pueden simplificar con un
programa en Perl. Se usa también para tratamiento y generación de ficheros de texto. También hay proyectos completos y complejos
escritos en Perl, pero son los menos.
La forma del lenguaje facilita la programación rápida y sucia , el hacer un programa rápido para que funcione.
Perl es un lenguaje multipropósito, en el se pueden hacer desde pequeños scripts para administrar servidores basados en Unix o GNU/Linux,
hasta hacer paginas web, existen proyectos completos realizados en Perl
Entornos de Desarrollo:
Actualmente en el mercado existen muchos entornos de desarrollo para programar en perl de los cuales podemos nombrar a :
1.- SublimeText (Windows y GNU/Linux)
2.- Eclipse (Windows y GNU/Linux)
3.- OpenPerlIDE(Windows)
Ejecución de Perl:
Para ejecutar un programa en Perl es necesario que este inicie con:
#!/usr/local/perl ,
esta línea indica la ubicación del interpretador Perl en el sistema (nótese la similitud con un archivo de Shell que debe iniciar con: #!/bin/sh
).
Desarrollo
echo OPCION 1
echo OPCION 2
echo OPCION 3 SALIR
read op
case $op in
1)
#creo un ciclo de repeticion que me permita crear una n cantidad de archivos con un determinado
nombre y a su ves lo pongo en un ciclo while del cual se saldrá al elegir la opcion 2
rp=1
while [ $rp -eq 1 ]
do
echo ingrese cuantos documentos desea ingresar
read num
echo ingrese el nombre que tendran esos documentos
read nomb
echo desea ingresar mas archivos?
echo 1 SI
echo 2 NO
read rp1
for((i=1; i<=$num;i++))
do
touch $nomb$num
done
if [ $rp1 -eq 1 ]
then
rp=1
else
rp=0
fi
done
#pido me sean ingresados dos meses para luego compararlos en el procedimiento de awk
#es muy importante saber que para utilizar las variables antes creadas primero debo llamarlas justo
despúes de awk con la siguiente sintaxis.( -v pasa="$mes" )
print NR,"\t",sort,$9,"\t",$6;
print $9,$6 | " sort -r > act2" #utilizo una tubería para que el resultado sea guardado en un
archivo
suma=suma $5 #creo una variable que irá sumando los valores encontrados en la columna $5
n++ #creao un contador para utilizarlo posteriormente en el calculo del promedio
}
}
END{
print "la suma de los archivos es=",suma,"\n";
print "la promedio de peso de los archivos es=",(suma/n),"\n";
print "adios\n";
}'
;;
2)
perl upract.pl #utilizo esta sintaxis para llamar al programa que cree en perl
;;
3)
retono=0
;;
esac
done
open(LEC, "<$arch");
while(<LEC>){
print;
}
close LEC;
if($dat=~/salir$/){
last BLQ;
}
open (ESC, ">>$arch");
print ESC $dat;
}
close ESC;
open(LEC2, "<$arch");
while(<LEC2>){
print;
}
close LEC2;
#convertir a arreglo
open(ARR, "<$arch");
$i=0;
while ($var1=<ARR>){
@arreglo[$i]=$var1;
$i++;
}
close ARR;
#buscar y remplazar
$l=0;
while($l==0){
foreach $var3(@arreglo){
if($var3=~ m/$ant/g){
$l++;
}
}
print "no se encontraron coincidencias\n";
print "Nuevamente\n";
}
open(REMP,">$arch");
foreach $varn1(@arreglo){
if($remplazo = $varn1=~ s/$ant/$nuev/g){
print REMP $varn1;
}else{
print REMP $varn1;
}
close LEC5;
}
}
}
}
#Bono creé un nuevo arreglo para posteriormente utilizarlo en el conteo de palabras remplazadas que
serán impresas.
@remplazos=(@remplazos,@arreglo);
CONCLUSIONES:
Cuando creamos un programa en awk podemos utilizar comandos que nos permiten concatenar también programas hechos en perl
Awk nos sirve para procesar archivos de texto mientras que perl nos permite extraer información de esos archivos.
RECOMENDACIONES:
Es importante llamar a la variable que se creado en bash dentro de awk para poder utilizarla.
Revisar las sintaxis básicas dentro del script a cada momento para no sobrellevar errores
Referencias
Bermejo, J. P. (s.f.). linuxfocus. Obtenido de http://linuxfocus.org/Castellano/September1999/article103.html