Answers:
cut
正是出于这个目的而存在。该-d
标志指定分隔符,并-f
指定要输出的字段:
cut -d: -f1 /etc/passwd
参数to -f
可以1,3
显示第一个和第三个字段,或者1-3
显示前三个。还有-b
and -c
标志读取字节和字符而不是字段。如果您需要更灵活的东西,通常awk
可以解决问题(请参阅Matthew的答案)
每次您要从表格输入中提取数据时,都应考虑awk。它几乎可以在每个Unix系统上使用,因此有以下习惯:
awk -F':' '{print $1}' /etc/passwd
-F':'
:定义“:”作为列定界符。'{}'
:对每一行执行此指令。print $1
:将第一列打印到屏幕上。tr
和at
是不几件事情几个例子)。
在您的示例中,所有3个名称的长度相同。在这种情况下-可能会发生,但/ etc / passwd不太可能-您也可以使用colrm:
echo "user1:x:1:4
> user2:x:2:5
> user3:x:3:6" | colrm 6
user1
user2
user3
或者,当然
cat FILE | colrm 6
(在极少数情况下useless use of cat
不适用,因为您无法手动设置FILE作为参数。)
cat
仍然没有用:colrm 6 < FILE
。
cat foo | grep bar
。
awk
需要一个文件名,因此您可以跳过管道并直接执行awk -F: '{print $1}' /etc/passwd