GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Busy Box Datei zeilenweise lesen?

Es kommt kein Lese-Applet mit Busy-Box.

Gibt es eine Möglichkeit, eine txt-Datei Zeile für Zeile mit busybox zu lesen?

Was ich jetzt habe, ist

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

Akzeptierte Antwort:

read ist eine in die Shell eingebaute Shell (es könnte keine Shell-Variable setzen, wenn dies nicht der Fall wäre).

Also, wenn Ihre busybox sh basiert auf ash , es ist:

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

Wie in jeder POSIX-Shell. Aber wie bei jeder Shell, verwenden Sie while read Schleifen zum Verarbeiten von Text ist im Allgemeinen eine schlechte Shell-Scripting-Praxis.

Oben benötigen Sie:

  • IFS= andernfalls werden führende und abschließende nicht maskierte Leerzeichen und Tabulatoren aus den Zeilen entfernt
  • -r , andernfalls werden umgekehrte Schrägstriche als Escape-Zeichen behandelt und entfernt (sofern nicht mit Escapezeichen versehen)
  • printf , nicht echo was nicht für Zeilen funktionieren würde, die zum Beispiel -nene sind
  • "$line" in Anführungszeichen (nicht $line ), andernfalls wird der Inhalt der Zeile auf Leerzeichen und Tabulatoren aufgeteilt und Globbing-Muster erweitert.
  • <&3 und 3< ... , wenn Sie Zugriff auf die ursprüngliche stdin innerhalb der Schleife benötigen.

Wenn die Datei nach der letzten Zeile Zeichen enthält und Sie diese anzeigen möchten, können Sie nach der Schleife hinzufügen:

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

Beachten Sie, dass diese Schleife keine Binärdaten verarbeiten kann (die NUL Zeichen).


Linux
  1. „ifs=Read -r Line“ verstehen?

  2. Cat Zeile X bis Zeile Y in einer riesigen Datei?

  3. Eine zeilenorientierte Datei lesen, die nicht mit einem Zeilenumbruch enden darf?

  4. Liest Tail die ganze Datei?

  5. Kann die zu patchende Datei in Eingabezeile 3 nicht finden?

Boxen Sie sich auf der Linux-Befehlszeile ein

So lesen Sie Dateien Zeile für Zeile in Bash

So lesen Sie eine Datei Zeile für Zeile in Bash

unix - Anzahl der Spalten in der Datei

Ansible Zeile in Datei auskommentieren

tar:kurz gelesen