Para quien no conozca a nuestro amigo AWK pueden avocarse a wikipedia http://en.wikipedia.org/wiki/AWK.
Extenderme a hablar de esta textutil de linux en su totalidad es mucho para un post, asi que por ahi irán saliendo uno que otro how-to de textutils.
Resulta que por algun motivo tenemos una cadena que necesitamos hacer pedazos a partir de un caracter en específico, por ejemplo un archivo con path de origen y destino para mover o copiar archivos, vamos a tomar de ejemplo lo que sería una linea del archivo
/home/fernando/hola.txt|/root/hola.txt
esto quiere decir que necesitamos una sentencia como esta:
cp /home/fernando/hola.txt /root/hola.txt
Acá es donde llega nuestro amigo AWK para plantearnos la solución a este dilema que viene a ser algo así:
echo "/home/fernando/hola.txt|/root/hola.txt" | awk '{split($1,arrayName,"|"); print "cp "arrayName[1]" "arrayName[2]}'
Especificamente quien hace la tarea es el comando “split” el cual tiene 3 parametros:
- Cadena de entrada ( $1 ) [Ver wikipedia el segmento del comando print ]
- nombre del Arreglo ( arrayName ) , el conteo de posiciones comienza en 1.
- separador ( “|” )
Si tenemos varias lineas en un archivo de entrada en lugar del comando “echo” podemos utilizar “cat [archivo de entrada]” asi:
cat listado.txt | awk '{split($1,arrayName,"|"); print "cp "arrayName[1]" "arrayName[2]}'
La salida de este comando nos dará un listado de sentencias que podremos utilizar y ejecutar directamente, lo cual podríamos hacerlo con un apóstrofe invertido (`)
`echo "/home/fernando/hola.txt|/root/hola.txt" | awk '{split($1,arrayName,"|"); print "cp "arrayName[1]" "arrayName[2]}'`








