【发布时间】:2012-08-28 16:32:38
【问题描述】:
来自/etc/passwd,我只需要“用户”部分。
例子:
backup:x:34:34:backup:/var/backups:/bin/sh
有backup 作为用户。
要提取我现在使用的用户部分:
perl -pe 's/^(.*?):.*/\1/g' < /etc/passwd
这比我的旧方法少了几个字符:
while read line; do echo ${line%%:*}; done < /etc/passwd
但这听起来有点矫枉过正。有很多文字要写。
谷歌搜索给了我:
awk -F ':' '{print $1}' < /etc/passwd
我想这是等价的吗?是吗?
cmp <(perl -pe 's/^(.*?):.*/\1/g' < /etc/passwd) <(awk -F ':' '{print $1}' < /etc/passwd)
是否有标准的 UNIX 工具或使用 perl 的更简单的方法来执行此操作?还是cut?
我是初学者。
顺便说一句,我在 Python 上进行了如下尝试,但我很烂,在 Python :(
python -c 'print "\n".join([u[:u.find(":")] for u in open("/etc/passwd")])'
编辑:实际上,Python 可能更像这样:
python -c 'print "\n".join([u.split(":")[0] for u in open("/etc/passwd")])'
嗯……还是很冗长。
【问题讨论】: