sed
Vous pouvez utiliser sed
pour analyser le fichier de configuration ini, surtout lorsque vous avez des noms de sections comme :
# last modified 1 April 2001 by John Doe
[owner]
name=John Doe
organization=Acme Widgets Inc.
[database]
# use IP address in case network name resolution is not working
server=192.0.2.62
port=143
file=payroll.dat
vous pouvez donc utiliser ce qui suit sed
script pour analyser les données ci-dessus :
# Configuration bindings found outside any section are given to
# to the default section.
1 {
x
s/^/default/
x
}
# Lines starting with a #-character are comments.
/#/n
# Sections are unpacked and stored in the hold space.
/\[/ {
s/\[\(.*\)\]/\1/
x
b
}
# Bindings are unpacked and decorated with the section
# they belong to, before being printed.
/=/ {
s/^[[:space:]]*//
s/[[:space:]]*=[[:space:]]*/|/
G
s/\(.*\)\n\(.*\)/\2|\1/
p
}
ceci convertira les données ini dans ce format plat :
owner|name|John Doe
owner|organization|Acme Widgets Inc.
database|server|192.0.2.62
database|port|143
database|file|payroll.dat
afin qu'il soit plus facile de l'analyser à l'aide de sed
, awk
o read
en ayant des noms de sections dans chaque ligne.
Crédits et source : Fichiers de configuration pour les scripts. Michael Grünewald
Vous pouvez également utiliser ce projet : chilladx/config-parser
un analyseur de configuration utilisant sed
.
6 votes
Est-ce que l'une de ces réponses respecte les sections ?
0 votes
Notez que tout script qui commence par
#!/bin/sh
est un script POSIX sh, et non un script bash. C'est une distinction importante, carsh
ne dispose pas de fonctionnalités comme les tableaux et les cartes (que bash appelle "tableaux associatifs") qui sont très utiles pour construire ce genre de choses.