如何使用grep提取UID信息?

时间:2016-09-28 20:13:35

标签: linux bash

我需要从/proc/*/status获取用户名,但

cat $i/status|grep "^Uid"|awk '{printf "%4s",$2}'

只显示数字,而不是我需要的名称,如果它是0我需要显示根。

3 个答案:

答案 0 :(得分:3)

你快到了。使用getent将UID解析为用户名:

getent passwd `grep "^Uid" /proc/$i/status |awk '{printf "%4s",$2}'`| cut -d: -f1

答案 1 :(得分:0)

% getent passwd $(grep -oP '^Uid:\s*\K\d+' /proc/$$/status) | cut -d: -f1

更改$$(当前shell processus pid)

答案 2 :(得分:0)

$ awk 'NR==FNR {uid[$3]=$1; next} /^Uid:/ {print uid[$2]}' FS=":" /etc/passwd FS="[ \t]+" /proc/1665/status
root

说明:

NR==FNR {         # /etc/passwd
    uid[$3]=$1    # an array with key=uid, value=username
    next
} 
/^Uid:/ {         # /proc/.../status record startin with Uid
    print uid[$2] # print username from array where uid matches
}