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

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

Ich habe eine Datei namens /tmp/urlFile wobei jede Zeile eine URL darstellt. Ich versuche, aus der Datei wie folgt zu lesen:

cat "/tmp/urlFile" | while read url
do
    echo $url
done

Wenn die letzte Zeile nicht mit einem Zeilenumbruchzeichen endet, wird diese Zeile nicht gelesen. Ich habe mich gefragt, warum?

Ist es möglich, alle Zeilen zu lesen, egal ob sie mit einer neuen Zeile beendet werden oder nicht?

Akzeptierte Antwort:

Sie würden Folgendes tun:

while IFS= read -r url || [ -n "$url" ]; do
  printf '%sn' "$url"
done < url.list

(effektiv fügt diese Schleife den fehlenden Zeilenumbruch in der letzten (Nicht-)Zeile hinzu).

  • Warum wird die Verwendung einer Shell-Schleife zum Verarbeiten von Text als schlechte Praxis angesehen?
  • Verstehen Sie „IFS=read -r line“?
  • Warum ist printf besser als echo?

Linux
  1. Busy Box Datei zeilenweise lesen?

  2. Wort am Zeilenende mit Sed anhängen?

  3. Zum Anfang oder Ende der Datei in Vim gehen [Schneller Tipp]

  4. Kann read(2) Null zurückgeben, wenn es nicht bei EOF ist?

  5. Zeile NUR zu einer Datei hinzufügen, wenn sie sich nicht bereits in der Datei befindet

Verkleinern Sie die PDF-Größe mit diesem Befehlszeilentrick

So lesen Sie Dateien Zeile für Zeile in Bash

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

Diff-Befehl in Linux mit Beispielen

So senden Sie eine E-Mail mit Dateianhang von der Befehlszeile aus

Warum fügt Vim einen Zeilenumbruch hinzu? Ist das eine Konvention?