GNU/Linux >> Linux Esercitazione >  >> Linux

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

Ho un file chiamato /tmp/urlFile dove ogni riga rappresenta un URL. Sto cercando di leggere dal file come segue:

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

Se l'ultima riga non termina con un carattere di nuova riga, quella riga non verrà letta. Mi chiedevo perché?

È possibile leggere tutte le righe, indipendentemente dal fatto che siano terminate con una nuova riga o meno?

Risposta accettata:

Faresti:

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

(in effetti, quel ciclo aggiunge nuovamente la nuova riga mancante sull'ultima riga (non)).

  • Perché l'utilizzo di un ciclo di shell per elaborare il testo è considerato una cattiva pratica?
  • Capisci "IFS=read -r line"?
  • Perché printf è meglio di echo?

Linux
  1. Come aggiungere una nuova riga alla fine di un file?

  2. Casella occupata Leggi file riga per riga?

  3. Come Grep Lines che non iniziano con "#" o ";"?

  4. Vai all'inizio o alla fine del file in Vim [Suggerimento rapido]

  5. read(2) può restituire zero quando non è in EOF?

Come leggere i file riga per riga in Bash

Come leggere un file riga per riga in Bash

Comando Diff in Linux con esempi

Come inviare un'e-mail con allegato file dalla riga di comando

wc -l NON conta l'ultimo del file se non ha il carattere di fine riga

echo testo con nuova riga in bash