Foros del Web » Administración de Sistemas » Unix / Linux »

¿cómo parsear archivo de texto con Bash?

Estas en el tema de ¿cómo parsear archivo de texto con Bash? en el foro de Unix / Linux en Foros del Web. Tengo definida --entre otros datos-- información de conexión a una base de datos en un archivo tipo INI, se me ocurrió que puedo crear un ...
  #1 (permalink)  
Antiguo 07/05/2009, 18:14
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 4 meses
Puntos: 102
¿cómo parsear archivo de texto con Bash?

Tengo definida --entre otros datos-- información de conexión a una base de datos en un archivo tipo INI, se me ocurrió que puedo crear un script para crear y montar dicha base de datos.... pero no tengo idea de cómo poder leer esa información y parsearla para obtener solo la información relevante.

Estas son las líneas que me interesan (repito, el archivo tiene más información):
Código ini:
Ver original
  1. database.url = pgsql:host=localhost dbname=py_database
  2. database.user = py_user
  3. database.password = py_password

¿Qué tendría que hacer para guardar esos py_database, py_user y pg_password en variables para ocuparlas posteriormente en mi script?.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #2 (permalink)  
Antiguo 07/05/2009, 19:17
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 4 meses
Puntos: 102
Respuesta: ¿cómo parsear archivo de texto con Bash?

... Casi ... he logrado esto:
Código bash:
Ver original
  1. while read curline; do
  2.     echo $curline
  3. done < $file | \
  4. grep database | \
  5. sed 's/ //g' | \
  6. sed 's/url=pgsql:host=localhost//g' | \
  7. sed 's/database.//g'

Con lu cual, obtengo esta salida:
Código txt:
Ver original
  1. dbname=actos_foraneos
  2. user=u_actosforaneos
  3. password=p_actosforaneos

... ¿hay manera de hacer la "asignación"?. Intenté colocar los varios "seds" entre llaves {}, que creo así se hacia, pero sin resultados ...

Bueno, a ver si alguien puede hecharme una mano.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 08/05/2009, 12:29
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿cómo parsear archivo de texto con Bash?

Si logras esa salida, el siguiente paso es usar cut:

Suponiendo que $linea_salida contenga una línea:

$linea_salida = "dbname=actos_foraneos"

creo que esto debería funcionar (disculpa, en este momento estoy en el trabajo con WinXP )

cut -d "=" -f 1 $linea_salida => el nombre de la "variable"
cut -d "=" -f 2 $linea_salida => su valor

(aunque ahora creo que para que eso funcione debes usar echo $linea_salida |cut...)

No es muy eficiente dado que tiene que llamar 2 veces a cut, pero como solución "sucia" podría servir. Seguramente puedas usar eval o incluso export para crear una variable de entorno con el nombre y el valor correspondiente (o crearlas antes, si ya sabés el valor )


Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:39.