Linux|从 STDIN 读取 Awk 输入

简介

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

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

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

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

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

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

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

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

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

复制代码
# 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多平台发布

相关推荐
郝学胜-神的一滴11 小时前
Python数据封装与私有属性:保护你的数据安全
linux·服务器·开发语言·python·程序人生
DeepNoMind12 小时前
AI 智能体高可靠设计模式:并行混合搜索融合
程序人生
天才测试猿18 小时前
自动化测试用例编写
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
runafterhit1 天前
《敢于放手的养育》阅读总结
程序人生
郝学胜-神的一滴2 天前
Python方法类型详解:类方法、静态方法与实例方法
开发语言·python·程序人生
郝学胜-神的一滴2 天前
Python类属性与实例属性详解及MRO算法演进
开发语言·python·程序人生·算法
数字化转型20253 天前
26-1-13 复盘:没有天生的强者,成长是 “做 + 悟” 的积累过程
程序人生
郝学胜-神的一滴3 天前
机器学习特征预处理:缺失值处理全攻略
人工智能·python·程序人生·机器学习·性能优化·sklearn
郝学胜-神的一滴3 天前
深入理解Qt中的坐标系统:鼠标、窗口与控件位置详解
开发语言·c++·qt·程序人生
数字化转型20253 天前
企业数字化架构集成能力建设
大数据·程序人生·机器学习