2010-02-25 4 views

Répondre

6

Qu'en est-

grep "key" my_file | cut -d'=' -f2 
+0

@mouviciel, mauvais commentaire location mate? (-: –

+2

Que faire si le fichier a une liste horizontale des paramètres key = value? – CMCDragonkai

+0

Poster a dit "chacun sur sa propre ligne" .Mais oui, s'il y en avait plus d'un par ligne alors cela ne marcherait pas –

1

Voilà comment je le fais dans ksh.

FOO=$(grep "^key=" $filename | awk -F"=" '{print $2}') 

Vous pouvez également utiliser une découpe à la place de l'awk. Si vous délimitez la paire de clés avec un espace, vous pouvez supprimer -F "=".

+2

grep peut être awk peut tout faire. 'awk -F "="'/^ key =/{print $ 2} '' – ghostdog74

1
read -r -p "Enter key to fetch: " key 
awk -vk="$key" -F"=" '$1~k{ print "value for "k" is "$2} ' file 

sortie

$ ./shell.sh 
Enter key to fetch: key1 
value for key1 is value1 

ou vous pouvez simplement utiliser le shell (par exemple bash)

read -r -p "Enter key to fetch: " key  
while IFS="=" read -r k v 
do 
    case "$k" in 
     *"$key"*) echo "value of key: $k is $v";; 
    esac 
done <"file" 
+0

peut même pas avoir besoin d'une regexp:' awk ...' $ 1 == k {print $ 2} ' file ' –

+0

dépend si OP a besoin d'une correspondance exacte Si ce n'est pas le cas, regexp est approprié OP peut implémenter un équivalent "like" SQL avec regexp – ghostdog74

+0

La commande awk ci-dessus ne semble pas fonctionner avec Solaris. – JonnyWizz

Questions connexes