2010-05-25 6 views
0

Salutations!Script Bash: lecture rationnelle des paramètres numériques à partir du fichier texte

Je dispose d'un fichier texte avec le paramètre défini comme suit:


NameOfParameter Valeur1 Valeur2 Value3 ... ...


Je veux trouver le paramètre nécessaire par son NameOfParameter en utilisant le motif regexp et renvoyer une valeur sélectionnée à mon script Bash. J'ai essayé de le faire avec grep, mais il retourne une ligne entière au lieu de Valeur.

Pouvez-vous m'aider à trouver une solution satisfaisante?

+0

avez-vous besoin de retourner toutes les 3 valeurs seulement 1 – DVK

+0

Par quel critère choisissez-vous la valeur sélectionnée est le nom du paramètre un nom de colonne ou quelque chose comme ça? – reinierpost

Répondre

0

Il n'était pas clair si vous voulez toutes les valeurs ensemble ou seulement une spécifique. Dans les deux cas, utilisez la commande cut pour couper les colonnes souhaitées dans un fichier (-f 2- va couper les colonnes 2 et suivantes (donc tout sauf le nom du paramètre; -d " " garantira que les colonnes sont séparées par des espaces, contrairement à onglet par défaut séparés)

egrep '^NameOfParameter ' your_file | cut -f 2- -d " " 
0

Bash:?

values=($(grep '^NameofParameter ')) 
echo ${values[0]} # NameofParameter 
echo ${values[1]} # Value1 
echo ${values[2]} # Value2 
# etc. 

for value in ${values[@:1]} # iterate over values, skipping NameofParameter 
do 
    echo "$value" 
done 
+0

Y at-il une possibilité d'utiliser cette méthode pour les données avec des délimiteurs non spatiaux: virgule, point, tabulation, etc.? –

+0

@Andrey: Définir IFS au délimiteur: 'saveIFS = $ IFS; IFS = ','; values ​​= ($ (grep '^ NameofParameter')); IFS = $ saveIFS; ... ' –

Questions connexes