【问题标题】:How to extract the uid value from id on Linux?如何在 Linux 上从 id 中提取 uid 值?
【发布时间】:2015-04-22 09:08:02
【问题描述】:

在 linux 中,如果你输入 id www-data 你会得到 id。

uid=33(www-data) gid=33(www-data) groups=33(www-data)

有没有办法从中提取 uid 的值?

我想我可以这样处理:

id www-data | grep ?

如果更简单,我也可以使用egrepsed,但不知道如何继续。 Stackoverflow 上的类似示例处理通过正则表达式直接提取值。我不知道该值是否为 33。因此我需要从uid= 提取它直到(www-data)。 (除非那总是 33 岁,而且我的生活太艰难了)。有什么建议吗?

【问题讨论】:

  • id -u www-data 怎么样?

标签: regex linux sed grep


【解决方案1】:

您可以使用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

一般来说,这些命令中的许多都提供标志来检索部分信息。查阅 manpage 一般会产生很多选项,只是偶尔您会发现需要一些未实现的东西。

【讨论】:

  • 我更改了问题以更好地反映答案,
【解决方案2】:

你可以使用 grep,

id www-data | grep -oP 'uid=\K\S+'

sed,

id www-data | sed -n 's/.*\buid=\([^ ]\+\).*/\1/p'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多