我想使用标准工具和bash打印Linux上的所有环境变量.我需要看到环境名称和屏蔽变量,如果变量长度大于5(qwerty
->;***rty
),则最后3个字符可见,如果小于5(或等于5),则屏蔽值带有1个可见字符(zxc
->;**c
).
示例:
FOO=qwerty
BAR=asdfghjkl
BAZ=zxc
我期待打印以下命令:
FOO=***rty
BAR=******jkl
BAZ=**c
原始值和掩码的长度在这里是相同的.
当时我试图使用这条awk
命令来实现这一点,但它只处理了其中的一些情况,将所有的Word替换为3 *
,并将值减少到最后3个字符(我不太擅长awk,所以也许可以更好地实现它):
env | awk -F= '{ if(length($2)>5) {printf("%s=***%s\n", $1, substr($2, length($2)-2))} }'