格调,格式化

时间:2012-11-28 05:27:18

标签: bash shell unix

我想创建一个UID和用户名的报告,格式类似于:

9142   jdoe
9158   jsmith
75488  msteel

等等

来自Unix中的“id”命令,在我们的系统上产生如下结果:

% id jdoe
uid=9142(jdoe) gid=101(users) groups=101(users)

此外,如果用户名不存在:

% id asdasdasd
id: asdasdasd: No such user

我希望结果类似于(使用短划线而不是不存在的UID):

----   asdasdasd
9142   jdoe
9158   jsmith
75488  msteel

非常感谢您的帮助!谢谢!

2 个答案:

答案 0 :(得分:1)

它不漂亮,但是:

sed -e 's/^uid=//;s/).*//;s/(/ /;s/^id:/----/;s/:.*//' | column -t

示例输出:

(id; id root; id daemon; id foobar ) 2>&1 \
| sed -e 's/^uid=//;s/).*//;s/(/ /;s/^id:/----/;s/:.*//' \
| column -t

501   atomlinson
0     root
1     daemon
----  foobar

答案 1 :(得分:1)

id $1 > temp
if [ $? -eq 0 ]
then
    cat temp | awk -F' ' '{print $1}'|awk -F'=' '{print $2}'|sed 's/(/ /g'|sed 's/)//g' >> output.txt
else
    echo "------" $1 >> output.txt
fi
rm temp