所以我知道存在解决这个问题的工具,因为我听说过它们,但我不知道它们是什么。
我想做一些像过滤掉 /etc/passwd 中的用户名以外的所有数据的操作。
例如,我想从以下文件中获取 user1、user2 和 user3。在这种情况下,逻辑可能是“将文本抓取到文件每一行的第一个 ':'”。
user1:x:1:4
user2:x:2:5
user3:x:3:6
Run Code Online (Sandbox Code Playgroud)
输出将是:
user1
user2
user3
Run Code Online (Sandbox Code Playgroud)
Mic*_*zek 19
cut正是为了这个目的而存在的。该-d标志指定分隔符,并-f指定要输出的字段:
cut -d: -f1 /etc/passwd
Run Code Online (Sandbox Code Playgroud)
to 的参数-f可以是1,3显示第一个和第三个字段,或者1-3显示前三个;还有-b和-c标志可以读取字节和字符而不是字段。如果您需要更灵活的东西,通常awk可以解决问题(请参阅马修的回答)
小智 13
每次要从表格输入中提取数据时,都应该考虑awk。它几乎在每个 Unix 系统上都可用,因此养成一个好习惯:
awk -F':' '{print $1}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
-F':': 将“:”定义为列分隔符。'{}': 对每一行执行这条指令。print $1:将第一列打印到屏幕上。