GNU/Linux >> Tutoriales Linux >  >> Linux

Buzón ocupado ¿Leer archivo línea por línea?

No hay ningún subprograma de lectura que venga con la casilla ocupada.

¿Hay alguna forma de leer un archivo txt línea por línea usando el cuadro ocupado?

Lo que tengo ahora es

while read line
do
     echo $line
done < "$InputFile"

Respuesta aceptada:

read es un shell incorporado (no podría establecer una variable de shell si no lo fuera).

Entonces, si tu busybox sh se basa en ash , es:

while IFS= read -r line <&3; do
  printf '%sn' "$line"
done 3< "$InputFile"

Como en cualquier shell POSIX. Pero como con cualquier shell, usar while read los bucles para procesar texto son generalmente una mala práctica de scripting de shell.

Arriba, necesitas:

  • IFS= de lo contrario, los espacios sin escape y las tabulaciones iniciales y finales se eliminan de las líneas
  • -r , de lo contrario, las barras invertidas se tratan como un carácter de escape y se eliminan (a menos que se escapen)
  • printf , no echo que no funcionaría para líneas que son, por ejemplo, -nene
  • "$line" citado (no $line ) de lo contrario, el contenido de la línea se divide en espacios y tabulaciones, y se expanden los patrones globales.
  • <&3 y 3< ... , si necesita acceder a la entrada estándar original dentro del ciclo.

Si el archivo contiene caracteres después de la última línea y desea mostrarlos, puede agregar después del bucle:

[ -z "$line" ] || printf %s "$line"

Tenga en cuenta que ese ciclo no puede manejar datos binarios (el NUL personaje).


Linux
  1. Encárguese en la línea de comandos de Linux

  2. ¿Entendiendo "ifs=Read -r Line"?

  3. Cat ¿Línea X a Línea Y en un archivo enorme?

  4. ¿Leer un archivo orientado a líneas que puede no terminar con una nueva línea?

  5. Permisos de archivo en Linux:lectura/escritura/ejecución

Cómo leer archivos línea por línea en Bash

Cómo leer un archivo línea por línea en Bash

VIM:cómo ir a la línea exacta en Ubuntu

¿Cómo leer la penúltima línea en un archivo usando Bash?

¿Por qué se usa select en Linux?

Obtener carácter sin bloqueo