Linux|从 STDIN 读取 Awk 输入

简介

在之前关于 Awk 工具的系列文章中,主要探讨了如何从文件中读取数据。但如果你希望从标准输入(STDIN)中读取数据,又该如何操作呢?

在本文中,将介绍几个示例,展示如何使用 Awk 来过滤其他命令的输出,而不仅仅是读取文件内容。

首先,将以 dir 工具为例,它的功能与 ls 命令类似。在第一个示例中,将 dir -l 命令的输出作为 Awk 的输入数据,以此来打印出当前目录下文件的所有者用户名、所属组名,以及该用户拥有的文件列表。

sh 复制代码
# dir -l | awk '{print $3, $4, $9;}'

再来看一个例子,在这个例子中,将利用 awk 表达式来实现一个特定功能:筛选并打印出由 root 用户拥有的文件。具体的做法是通过一个过滤表达式来完成,如下所示的 awk 命令:

sh 复制代码
# dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '

上述命令包括(==)比较运算符,帮助过滤当前目录中由 root 用户拥有的文件。这是通过使用表达式 $3=="root" 实现的。

再看一个例子,其中使用 awk 比较运算符来匹配特定的字符串。

在这里,使用 cat 实用程序查看名为 tecmint_deals.txt 的文件的内容,并且只想查看类型为 Tech 的交易,因此将运行以下命令:

sh 复制代码
# cat tecmint_deals.txt
# cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
# cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'

在上面的例子中,使用了值 ~ /pattern/ 比较运算符,但有两个命令可以尝试并提取出非常重要的内容。

当您使用模式 tech 运行命令时,因为没有那种类型的交易,所以什么都不会打印出来,但是使用 Tech 时,您会得到类型为 Tech 的交易。

因此,在使用这种比较运算符时一定要小心,正如上面所看到的,它是区分大小写的。

您可以随时使用另一个命令的输出作为 awk 的输入,而不是从文件中读取输入,这就像在上面的例子中所看到的那样,非常简单。

本文由mdnice多平台发布

相关推荐
AskHarries9 小时前
一个页面如何布局关键词
程序员
面包龙9 小时前
什么是 AI?从人工智能、机器学习到大语言模型和 Agent
人工智能·程序员·全栈
明月沟渠照不进9 小时前
我让 TRAE Work 给自己造了个"填表技能",工时日报从此只说一句人话
程序员
文心快码BaiduComate10 小时前
额度不足的痛,我们懂!文心快码Comate测试版不限量Token第二弹来了!
程序员·ai编程·创业
神奇小汤圆10 小时前
爽用 DeepSeek V4 Flash、GLM-5.2、Qwen3.8 Max、GPT 5.6 Luna,OpenCode 太香了!
程序员
程序员cxuan13 小时前
DeepSeek Harness 必装的插件公布了!
人工智能·后端·程序员
卡卡罗特学AI13 小时前
Codex 百万上下文终于能开了,只要改这 3 行配置
程序员
SamDeepThinking14 小时前
从REST到gRPC,一个API选型的思考框架
java·后端·程序员
无责任此方_修行中15 小时前
AI 成本复盘!5 个月后的真实使用情况(附账单)
后端·程序员·ai编程
PC2005_cloud15 小时前
DSH 沙箱机制拆解:受限令牌为何会掐断 HTTPS 请求
前端·程序员