Si vous souhaitez réutiliser uniquement la première ligne d'un fichier :le contenu de 'fichier' est redirigé vers la commande read, qui va placer ce qu'elle a lu dans une variable; ici, j'ai choisi le nom premiR_Ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ read premiR_Ligne < fichier $ echo "$premiR_Ligne"
Pour lire tout le contenu du fichier, on utilisera une boucle while :Il est possible de découper la ligne en autant de variables que nécessaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 while read Ligne do echo "$Ligne" done < fichierLes lignes d'un fichier peuvent commencer par des espaces, mais les codes précédents n'ont tiendront pas compte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while read champ1 champ2 toutLeReste do line="$champ1 $champ2 $toutLeReste" echo "$line" done < fichier
Il y a deux façons de préserver ces espaces :où REPLY est le nom de variable par défaut quand aucun nom de variable n'est indiqué à read.
Code : Sélectionner tout - Visualiser dans une fenêtre à part while read; do echo "$REPLY"; done
ou, vous pouvez modifier l'environnement de la commande read en adaptant l'IFS (Internal Field Separator) en lui assignant une valeur nulle :Si vous avez besoin de découper la ligne en fonction du formatage d'un fichier (CSV, par exemple),
Code : Sélectionner tout - Visualiser dans une fenêtre à part while IFS='' read line; do echo "$line"; done
l'IFS peut être adapté pour correspondre au séparateur de champs du fichier :vous pourriez utiliser un tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while IFS=';' read champ1 champ2 toutLeReste do line="$champ1 $champ2 $toutLeReste" echo "$line" done < fichier.csvou les paramètres positionnels :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 while IFS=';' read -a Array do echo "${Arrray[@]}" done < fichier.csvl'IFS, et les paramètres positionnels du script sont conservés intacts, car le pipe crée un sous-shell en dehors duquel les variables créées (ou modifiées) n'existent pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 commandeQuiSortDuCSV | while read Ligne do IFS=';' set -- $Ligne echo "$@" done
Partager