GNU/Linux >> Tutoriels Linux >  >> Linux

Lire un fichier orienté ligne qui ne se termine peut-être pas par une nouvelle ligne ?

J'ai un fichier nommé /tmp/urlFile où chaque ligne représente une URL. J'essaie de lire le fichier comme suit :

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

Si la dernière ligne ne se termine pas par un caractère de saut de ligne, cette ligne ne sera pas lue. Je me demandais pourquoi ?

Est-il possible de lire toutes les lignes, qu'elles se terminent ou non par une nouvelle ligne ?

Réponse acceptée :

Vous feriez :

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

(en fait, cette boucle rajoute la nouvelle ligne manquante sur la dernière (non-) ligne).

  • Pourquoi l'utilisation d'une boucle shell pour traiter du texte est-elle considérée comme une mauvaise pratique ?
  • Comprendre "IFS=read -r line" ?
  • Pourquoi printf est-il meilleur que echo ?

Linux
  1. Réduisez la taille du PDF avec cette astuce de ligne de commande

  2. Aller au début ou à la fin du fichier dans Vim [Quick Tip]

  3. wc -l ne compte PAS le dernier du fichier s'il n'a pas de caractère de fin de ligne

  4. texte d'écho avec une nouvelle ligne dans bash

  5. Pourquoi Vim ajoute-t-il une nouvelle ligne ? Est-ce une convention ?

Comment lire des fichiers ligne par ligne dans Bash

Comment lire un fichier ligne par ligne dans Bash

Commande Diff sous Linux avec exemples

Comment envoyer un e-mail avec une pièce jointe à partir de la ligne de commande

Comment remplacer un fichier en jar par une ligne de commande sous Linux ?

sed :comment remplacer la ligne si elle est trouvée ou ajouter à la fin du fichier si elle n'est pas trouvée ?