2010-02-25 14 views

Respuesta

6

¿qué pasa con

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

@mouviciel, ubicación incorrecta del comentario mate? (-: –

+2

¿Qué sucede si el archivo tiene una lista horizontal de parámetros clave = valor? – CMCDragonkai

+0

El cartel decía "cada uno en su propia línea". Pero sí, si había más de uno por línea, esto no funcionaría. –

1

Esto es como lo hago en ksh.

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

También puede usar cortar en lugar de awk. Si delimita el par de claves con un espacio, puede soltar el -F "=".

+2

grep omitido. awk puede hacerlo todo. '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 

salida

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

o simplemente puede usar el intérprete (por ejemplo, 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

puede que ni siquiera necesite una expresión regular:' awk ...' $ 1 == k {print $ 2} ' archivo ' –

+0

depende si OP necesita concordancia exacta. Si no es así, regexp es apropiado. OP puede implementar un equivalente "como" SQL con regexp – ghostdog74

+0

El comando awk anterior no parece funcionar con Solaris. – JonnyWizz

Cuestiones relacionadas