Mit sed, um eine env-var von /proc/*/environ Verrücktheit mit \x00

Ich versuche zu winseln durch einige andere Prozesse, die Umgebung zu bekommen, eine bestimmte env var.

So, ich habe versucht, einen sed-Befehl wie:

sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/\1/p" /proc/pid/environ

Aber ich bekomme als Ausgabe die volle environ-Datei. Wenn ich die Stelle des \1 mit nur einer statischen string, bekomme ich diesen string plus die gesamte Umwelt-Datei:

sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/BLAHBLAH/p" /proc/pid/environ

Ich soll einfach immer "BLAHBLAH" im letzten Beispiel. Dies geschieht nicht, wenn ich loszuwerden, die null-chars und einige andere test-Daten.

Dies führte mich zu versuchen, die Umwandlung der \x00 bis \x01 ' s, die nicht zu funktionieren scheinen:

cat /proc/pid/environ | tr '\000' '\001' | sed -n "s/\x01ENV_VAR_NAME=\([^\x01]*\)\x01/\1/p"

Bin ich etwas fehlt, einfach über die sed hier? Oder sollte ich nur stick auf diese Lösung?

Schreibe einen Kommentar