moo*_*oon 2 grep users text-processing
对于家庭作业,我需要使用grep
来解析/etc/passwd
并获取所有用户的列表(只有他们的用户名,没有别的)。它应该使用管道,结果应该在allusers
文件中结束。这是我到目前为止:
grep -i etc/password | .... >allusers
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
Mic*_*zek 11
/etc/passwd
一行中的每个字段都用冒号分隔,用户名是第一个字段,因此您需要过滤每一行以仅显示第一个冒号之前的字符
grep
甚至不接近执行此操作的最佳工具,但如果您需要使用它,这将起作用:
grep -oE '^[^:]+' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
-o
告诉它只返回匹配的那部分行。-E
打开扩展的正则表达式,以便+
稍后工作。^
匹配行的开头,[^:]
匹配除冒号以外的任何内容,并+
表示尽可能多的字符。所以这将匹配每一行的开头直到第一个冒号
如果您能够使用除 之外的其他工具grep
,这里有其他通常更好的方法:
cut -d: -f1 /etc/passwd
sed 's/:.*//' /etc/passwd
awk -F: '{print $1}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
您可以将其中任何一个的结果重定向到allusers
using> allusers
就像您在示例中一样