Sistemas Operativos > GNU/Linux

 Leer fichero caracter por caracter

(1/2) > >>

badyalberto:
Como puedo leer de un fichero de texto caracter por caracter ?
Estoy haciendo un script en bash que necesito que lea los caracteres de un fichero y me cambie una vocales por otra.
Yo lo que utilizo es:

while read linea
do
         caracter=${linea:0:1}
# luego aqui dentro hago un case para q dependiendo de q letra lea la cambie por una o otra.
done
Pero asi solo me lee un caracter de una linea, las lineas no son del mismo tamaño ni tienen los mismo campos :S

su -:

--- Código: Bash ---cat texto | while read -n 1 i; do echo $i; done Con eso lo haces  ;) pero ten en cuenta que tienes que crear un archivo nuevo para guardar lo que remplazas (no puedes escribir encima).

badyalberto:
no entiendo eso del while read -1 2 i;

Yo ahora habia quitado el while read y lo habia puesto directo algo asi:

cat poema2 | tr "e" "a">poema3
cat poema2 | tr "i" "e">poema3
cat poema2 | tr "o" "u">poema3
cat poema2 | tr "u" "o">poema3
cat poema2 | tr "a" "u">poema3

Pero veo q solo hace el ultimo cat :S

su -:
La solucion con tr seria esta:

--- Código: Bash ---cat poema2 | tr "e" "a" > poema3cat poema3 | tr "i" "e" > poema4cat poema4 | tr "o" "u" > poema5cat poema5 | tr "u" "o" > poema6cat poema7 | tr "a" "u" > poema8 De lo contrario estarias aplicando el tr solo a poema2, borrano y creando nuevamente poema3.

Lo de while es simple: le pasamos a while la salida de cat usando pipes (el |) y de ahi, este lee 1 byte (ese es el flag -n 1) que es un caracter y lo asigna a $i.
En ese ejemplo, read incluye retornos de carro ("n") y todo tipo de caracteres.

Ahora, te toca ver como usar while, read e if para hacer lo que quieres... o usar la otra solucion.

m0skit0:
Puedes usar >> (redirect append) en vez de > (redirect overwrite)...

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa