Answers:
cut正是出于这个目的而存在。该-d标志指定分隔符,并-f指定要输出的字段:
cut -d: -f1 /etc/passwd
参数to -f可以1,3显示第一个和第三个字段,或者1-3显示前三个。还有-band -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