GNU/Linux >> Tutoriels Linux >  >> Linux

Boîte occupée lire le fichier ligne par ligne ?

Il n'y a pas d'applet de lecture avec la boîte occupée.

Existe-t-il un moyen de lire un fichier txt ligne par ligne à l'aide de busybox ?

Ce que j'ai maintenant est

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

Réponse acceptée :

read est un shell intégré (il ne pourrait pas définir une variable shell si ce n'était pas le cas).

Donc, si votre busybox sh est basé sur ash , c'est :

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

Comme dans n'importe quel shell POSIX. Mais comme avec n'importe quel shell, en utilisant while read boucles pour traiter le texte est généralement une mauvaise pratique de script shell.

Ci-dessus, vous avez besoin :

  • IFS= sinon, les espaces non échappés et les tabulations de début et de fin sont supprimés des lignes
  • -r , sinon les barres obliques inverses sont traitées comme un caractère d'échappement et supprimées (sauf si elles sont échappées)
  • printf , pas echo qui ne fonctionnerait pas pour les lignes qui sont par exemple -nene
  • "$line" entre guillemets (et non $line ) sinon le contenu de la ligne est divisé en espaces et en tabulations, et les modèles de globalisation sont développés.
  • <&3 et 3< ... , si vous avez besoin d'accéder au stdin d'origine dans la boucle.

Si le fichier contient des caractères après la dernière ligne et que vous souhaitez les afficher, vous pouvez ajouter après la boucle :

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

Notez que cette boucle ne peut pas gérer les données binaires (le NUL caractère).


Linux
  1. Enfermez-vous sur la ligne de commande Linux

  2. Impossible de trouver le fichier à patcher sur la ligne d'entrée 3 ?

  3. Autorisations de fichiers sous Linux – Lecture/Écriture/Exécution

  4. unix - nombre de colonnes dans le fichier

  5. tar :lecture courte

Comment lire des fichiers ligne par ligne dans Bash

Comment lire un fichier ligne par ligne dans Bash

ajouter une ligne à un fichier UNIQUEMENT s'il n'est pas déjà dans le fichier

Obtenir un caractère non bloquant

Ansible décommenter la ligne dans le fichier

unix - divise un énorme fichier .gz par ligne