Estoy tratando de arrastrarme por el entorno de otros procesos para obtener un env var específico.Usar sed para obtener un env var de/proc/*/environment weirdness con x00
por lo que he estado tratando un comando sed como:
sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/\1/p" /proc/pid/environ
Pero estoy como salida el archivo completo Environ. Si se sustituye la \ 1 con sólo una cadena estática, lo entiendo cadena de caracteres más todo el archivo environ:
sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/BLAHBLAH/p" /proc/pid/environ
acabo debería llegar "blahblah" en el último ejemplo. Esto no sucede si me deshago de los caracteres nulos y uso algún otro conjunto de datos de prueba.
Esto me lleva a intentar transformar el \ x00 a \ x01 de, lo cual no parece funcionar:
cat /proc/pid/environ | tr '\000' '\001' | sed -n "s/\x01ENV_VAR_NAME=\([^\x01]*\)\x01/\1/p"
Me estoy perdiendo algo simple sobre sed aquí? ¿O debería seguir con esta solución?
Esto también soluciona mi problema con ir a tientas a juego con el primer env var en el archivo que no tiene un \ x01 delante de él. Muchas gracias. –
Me salvaste el día. Creo que es la única forma de pasar un valor de variable dinámico a un servicio iniciado por el sistema. –
'awk' no funciona si el valor de la variable contiene' = '? por ejemplo: 'awk -v 'RS = \ 0' -F = '$ 1 ==" LS_COLORS "{print $ 2}' proc/self/environ' – Jasen