Tengo un archivo de texto con ciertas instrucciones de instalación, y sé que puedo buscar una ocurrencia única en el archivo. Por ejemplo, el archivo de texto tiene algo como:
MYDIR = `find / home / user -name somedir` exportar PERL5LIB = $ PERL5LIB: $ MYDIR
En bash, ¿cómo puedo ejecutar las líneas después de un grep en el archivo? Algo como:
ejecutar resultado de "grep somedir INSTALLFILE" ejecutar el resultado de "grep 'export PERL5LIB' INSTALLFILE"
Respuestas:
Suposiciones
Puede redirigir sus comandos a un archivo temporal y ejecutar eso:
O podrías evaluar los resultados
Actualizando una vieja respuesta. Lo que haría hoy es usar una sustitución de proceso:
fuente
source <(...)
, necesita bash 4 o superior. No funcionaba con versiones anteriores (aunque zsh estaba bien).Para evaluar las líneas en un proceso de shell separado:
Para evaluar las líneas en el proceso de shell en ejecución:
fuente
-A 1
o-B 1
como indicadores en uno u otro de susgrep
correos electrónicos para obtener ambas líneas con un grep y usarlo en cualquiera de las soluciones de @Gilles.sh
puede haber un enlace simbólico a otro shell en lugar del que esperaba, por lo que los resultados podrían ser impredecibles. Para estar seguro, especifique el caparazón exacto que espera, por ejemplogrep somedir INSTALLFILE | bash
¿Ha considerado usar la función 'exec' de find como en:
fuente