我正试图通过一些其他进程环境来获取特定的env var.
所以我一直在尝试一个sed命令,如:
sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/\1/p" /proc/pid/environ
但我得到的是完整的environ文件输出.如果我用一个静态字符串替换\ 1,我会得到该字符串加上整个environ文件:
sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/BLAHBLAH/p" /proc/pid/environ
我应该在最后一个例子中得到"BLAHBLAH".如果我摆脱空字符并使用其他测试数据集,则不会发生这种情况.
这导致我尝试将\ x00转换为\ x01,这似乎有效:
cat /proc/pid/environ | tr '\000' '\001' | sed -n "s/\x01ENV_VAR_NAME=\([^\x01]*\)\x01/\1/p"
我在这里错过了关于sed的简单介绍吗?或者我应该坚持这个解决方法?