Sistemas Operativos > GNU/Linux
Leer fichero caracter por caracter
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
[#] Página Siguiente
Ir a la versión completa