在linux中,如果您输入id www-data
,则会获得ID。
uid=33(www-data) gid=33(www-data) groups=33(www-data)
有没有办法从中提取uid的值?
我想我可以像这样管道:
id www-data | grep ?
我还可以使用egrep
或sed
,如果它更容易,但不确定如何继续。
Stackoverflow上的类似示例涉及通过regex直接提取值。我不知道该值是否为33.因此,我需要将其从uid=
提取到(www-data)
。 (除非总是33岁,我的生活太难了)。有什么建议吗?
答案 0 :(得分:3)
您可以使用id
(来自man id
)的标记,而不是使用正则表达式:
-g, --group
print only the effective group ID
-G, --groups
print all group IDs
-n, --name
print a name instead of a number, for -ugG
-r, --real
print the real ID instead of the effective ID, with -ugG
-u, --user
print only the effective user ID
这可能不太容易出错:如果将来id
会改变格式化输出的方式,那么该标志仍然有效。
所以使用:
$ id -u www-data
33
通常,这些命令中的许多命令都提供标记来检索部分信息。一般来说,咨询联机帮助页会产生很多选项,偶尔您会发现需要一些未实现的内容。
答案 1 :(得分:1)
你可以使用grep,
id www-data | grep -oP 'uid=\K\S+'
OR
SED,
id www-data | sed -n 's/.*\buid=\([^ ]\+\).*/\1/p'