Utilisez séparateur de champ interne pour lire le fichier

variable d'environnement spécial IFS, appelé le séparateur de champ interne (séparateur de champ interne)
Par défaut, bash shell par défaut suivant le caractère comme séparateur de champ à l' intérieur:

  • blanc
  • languette
  • Newline

Lire un fichier

Vous pouvez modifier temporairement la valeur de la variable d'environnement IFS pour limiter le champ caractère délimiteur est traité comme le shell bash.
La reprise ne reconnaît newline, IFS = $ « \ n » .
Voici tout d' abord créer un fichier comme suit:
$ États CAT

Alabama
Alaska
Arizona
Delaware

Ensuite , créez un script nommé le test
$ CAT test

#!/bin/bash
# reading values from a file
file="states"

IFS=$'\n'
for state in $(cat $file)
do
  echo "Visit beautiful $state"
done

Exécuter des scripts de test, vous pouvez obtenir la sortie suivante

Visit beautiful Alabama
Visit beautiful Alaska
Visit beautiful Arizona
Visit beautiful Delaware

Remarque: Si vous souhaitez spécifier une pluralité de caractères IFS, tant qu'ils sont affectés à la ligne sur la ligne série
tels que IFS = $ « \ n »:; " sauts de ligne va, deux points, virgule, des guillemets doubles comme séparateurs de champs.

fichier de traitement en boucle

En modifiant l'IFS, en constante évolution séparateur de champ, il peut être utilisé dans le fichier de traitement en boucle
pour créer un nouveau fichier:
$ Villes CAT

Shandong:jinan
heilongjiang:haerbin
fujian:fuzhou
yunan:kunming

Ensuite , créez un script nommé test2
$ CAT test2

#!/bin/bash
#city in province
IFS=$'\n'
for city in $(cat cities)
do 
  echo City is $city
  IFS=:
  for value in $city
  do 
     echo " $value"
  done
done

Test2 exécution du script, vous pouvez obtenir le résultat suivant:

City is Shandong:jinan
 Shandong
 jinan
City is heilongjiang haerbin
 heilongjiang
 haerbin
City is fujian fuzhou
 fujian
 fuzhou
City is yunan kunming
 yunan
 kunming

A partir des exemples ci - dessus, vous pouvez voir un réglage de saut de ligne IFS départ, pour la lecture de chaque ligne de données
suivies par deux points, pour séparer chaque ligne de chaque champ dans les données en modifiant les IFS, le dernier cycle d' affichage imbriqué.

Publié 75 articles originaux · a gagné les éloges 7 · vues 10000 +

Je suppose que tu aimes

Origine blog.csdn.net/zhengdong12345/article/details/101025541
conseillé
Classement