Leer archivos de texto desde Bash

Supongamos por ejemplo que queremos abrir una lista de URLs que estan en un archivo de texto (Solo para encontrar un pretexto para leer archivos de texto). Una opcion es seguir estos pasos. Lo bueno de este codigo es que tiene algunos tips puntuales que son utiles para otras cosas mas que este ejemplo raro.

Crear un archivo que se llame "paginas.txt" y poner adentro algunas URLs.
Por ejemplo.

http://www.google.com
http://tecnologiayredes.tyrdomains.com
http://www.slashdot.com
http://www.gnutransfer.com

Luego un archivo Bash para ejecutar que contenga este codigo, por ejemplo con el nombre "pags":

#! /bin/bash
PROG_NAME=`basename $0`
case "$1" in
c)
        while read line
        do
                google-chrome "$line"
                done < /path/paginas.txt
    ;;
i)
        while read line
        do
                google-chrome "$line" -incognito
                done < /path/paginas.txt
    ;;


*)
        echo "Help:"
        echo "c: google-chrome"
        echo "i: google-chrome Incognito"
    ;;
esac

Al ejecutar el archivo pags se iran abriendo en este caso las paginas del archivo paginas.txt en distintos tabs.

En este caso si ingresamo pags mas el parametro "c" abre las URLs en google-chrome en modo normal. Si le ponemos el parametro "i" las abre en google-chrome en modo incognito. Y cualquier otro parametro que le pongamos o ningun parametro devuelve un help

Ahora supongamos que (Se nota que no tengo nada que hacer a esta hora) queremos leer el contenido de ese archivo y abrir una linea en particular en nuestro browser. Por ejemplo un txt que en el medio tiene algun link (Esto solo como ejemplo, se puede aplicar a lo que se necesite). Hacemos lo siguiente dentro del mismo codigo puesto arriba. Le damos primero la opcion "v" para ver el contenido. y despues la opcion "l" para abrir determinada linea. Para esto uso el comando sed

v)
        cat /path/paginas.txt
    ;;

l)
        pp=$(sed -n "${2}p" /path/paginas.txt)
        google-chrome $pp
    ;; 

Asi si ejecuto esta app y le paso como primer parametro "v" me muestra el contenido de /path/paginas.txt con less o como mas les guste, y si le paso el primer parametro "l" abrira en el browser el numero de linea que le pasemos como segundo parametro.

por ejemplo:

Si en /path/paginas.txt tenemos:

http://www.google.com
http://tecnologiayredes.tyrdomains.com
http://www.slashdot.com
http://www.gnutransfer.com

y ejecutamos nuestra app pags y le pasamos y le pasamos "l 3" (pags l 3) nos va a abrir Slashdot por ser la linea numero 3 (slashdot)

 

Ahora, si quiere reemplazar una linea, por ejemplo la 3° Slashdot hago lo siguiente:

r)
         sed -i "${2}c\ ${3}" /path/paginas.txt
     ;;

ahora a la aplicacion le pasamos el parametro de linea a modifiar y el texto nuevo:
 

pags r 3 http://www.wikipedia.com

Y quedaria asi:
 

http://www.google.com
http://tecnologiayredes.tyrdomains.com
http://www.wikipedia.com
http://www.gnutransfer.com

 

Espero que les sea util. No tiene mucha utilidad para mi pero lo hice por curiosidad. A alguien le va a servir espero
Salu2

Tags: 

Predefined Sections

Seccion Cisco   Seccion Linux   Seccion Microsoft   Seccion Redes   Seccion Seguridad   Seccion General