GNU/Linux >> Linux Esercitazione >  >> Linux

Casella occupata Leggi file riga per riga?

Non è presente alcuna applet di lettura in arrivo con la casella occupata.

C'è un modo per leggere un file txt riga per riga usando busybox?

Quello che ho ora è

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

Risposta accettata:

read è una shell incorporata (non potrebbe impostare una variabile di shell se non lo fosse).

Quindi, se il tuo occupato sh si basa su ash , è:

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

Come in qualsiasi shell POSIX. Ma come con qualsiasi shell, usando while read i cicli per elaborare il testo sono generalmente una cattiva pratica di scripting della shell.

Sopra, hai bisogno di:

  • IFS= altrimenti gli spazi e le tabulazioni senza escape iniziali e finali vengono rimossi dalle righe
  • -r , altrimenti le barre inverse vengono trattate come caratteri di escape e rimosse (a meno che non siano sfuggite)
  • printf , non echo che non funzionerebbe per righe che sono ad esempio -nene
  • "$line" quotato (non $line ) altrimenti il ​​contenuto della riga viene suddiviso in spazi e tabulazioni e i modelli di globbing vengono espansi.
  • <&3 e 3< ... , se hai bisogno di accedere allo stdin originale all'interno del ciclo.

Se il file contiene caratteri dopo l'ultima riga e vuoi visualizzarli, puoi aggiungere dopo il ciclo:

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

Nota che quel ciclo non può gestire dati binari (il NUL carattere).


Linux
  1. Cat Line X to Line Y su un file enorme?

  2. Leggi un file orientato alla riga che potrebbe non terminare con una nuova riga?

  3. Permessi dei file in Linux – Lettura/Scrittura/Esegui

  4. VIM:come andare alla riga esatta su Ubuntu

  5. Come leggere la penultima riga in un file usando Bash?

Come leggere i file riga per riga in Bash

Come leggere un file riga per riga in Bash

Perché select è usato in Linux

Non bloccante Ottieni carattere

Ansible decommentare la riga nel file

tar:lettura breve