小编Tre*_*son的帖子

使用sed从\ x00获取/ proc/*/environ古怪的env变量

我正试图通过一些其他进程环境来获取特定的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的简单介绍吗?或者我应该坚持这个解决方法?

linux bash sed environment-variables

19
推荐指数
4
解决办法
1万
查看次数

标签 统计

bash ×1

environment-variables ×1

linux ×1

sed ×1