AWK读取标准输入具体方法

在 awk 系列中,我们将会看到几个例子,你可以筛选其他命令的输出代替从一个文件读取输入作为 awk 的输入。我们首先从使用 dir 命令开始,它类似于 ls 命令。

在第一个例子下面,我们使用 dir -l 命令的输出作为 awk 命令的输入,这样就可以打印出文件拥有者的用户名,所属组组名以及在当前路径下他/她拥有的文件。

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

AWK 怎么读取标准输入(STDIN)AWK 怎么读取标准输入(STDIN)

列出当前路径下的用户文件

再来看另一个例子,我们使用 awk 表达式 ,在这里,我们想要在 awk 命令里使用一个表达式筛选出字符串来打印出属于 root 用户的文件。命令如下:

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

AWK 怎么读取标准输入(STDIN)AWK 怎么读取标准输入(STDIN)

列出 root 用户的文件

上面的命令包含了 (==) 来进行比较操作,这帮助我们在当前路径下筛选出 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}'

AWK 怎么读取标准输入(STDIN)AWK 怎么读取标准输入(STDIN)

用 Awk 比较运算符匹配字符串

在上面的例子中,我们已经用了参数为 ~ /匹配字符/ 的比较操作,但是上面的两个命令给我们展示了一些很重要的问题。

当你运行带有 tech 字符串的命令时终端没有输出,因为在文件中没有 tech 这种字符串,但是运行带有 Tech 字符串的命令,你却会得到包含 Tech 的输出。

所以你应该在进行这种比较操作的时候时刻注意这种问题,正如我们在上面看到的那样,awk 对大小写很敏感。

你总是可以使用另一个命令的输出作为 awk 命令的输入来代替从一个文件中读取输入,这就像我们在上面看到的那样简单。

希望这些例子足够简单到可以使你理解 awk 的用法,如果你有任何问题,你可以在下面的评论区提问,记得查看 awk 系列接下来的章节内容,我们将关注 awk 的一些功能,比如变量,数字表达式以及赋值运算符。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/4004.html

(0)
晴川运维晴川运维
上一篇 2025年6月4日
下一篇 2025年6月4日

相关推荐

  • Linux常用命令lndir命令具体使用方法

    Linux lndir命令用于连接目录内容。 执行lndir指令,可一口气把源目录底下的文件和子目录统统建立起相互对应的符号连接。 语法 lndir [-ignoreli…

    Linux系统 2025年6月8日
  • 使用ACL工具备份和恢复Linux的文件权限

    作为一个系统管理 ,我们的首要任务将是保护和未经授权的访问安全的数据。 我们都知道我们设置使用一些像CHMOD,CHOWN,chgrp命令 ……等有用的Linux命令然而,这些缺省…

    Linux系统 2025年6月13日
  • CentOS 8上安装GCC具体方法

    Linux系统下的gcc(GUN C Complier)是GUN的缩写。 在Linux和Unix下,一般我们使用gcc进行编译 c和c++代码,本篇文章重点为大家讲解一下CentO…

    Linux系统 2025年6月4日
  • Go语言中常用的开发神器

    Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++…

    Linux系统 2025年6月8日
  • 云计算的7种变化方式

    云”这个词是一个模糊不清的词,即使人们长期坚定地使用它。这种情况就好像,当政治家们陷入困境时,他喜欢说解决问题的办法常常是通过“教育”一样。在过去的十年或更长的时间里,从实习生到首…

    Linux系统 2025年6月10日
  • 讲解一下C 语言布尔类型

    C语言就没有真正的布尔类型,布尔类型实际上是用数值型(int,float,char等)表示的,不能自动打印为true或者false,只能自己写代码实现。 C 语言标准(C89) 没…

    Linux系统 2025年6月8日
  • 快速上手Elasticsearch

    Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。 Lucene 可以说是当下最先进、高性能、全功…

    Linux系统 3天前
  • Linux运维面试集锦

    本篇文章重点为大家分享一下Linux运维人员面试常见的问题及答案,准备参加Linux运维面试的小伙伴们是否做好了面试准备,今天在这里小编继续为大家分享一些Linux运维人员面试中的…

    Linux系统 2025年6月8日
  • Mariadb中聚合函数和分组函数具体使用方法

    聚合函数能对集合中的一组数据进行计算,并返回单个计算结果,分组函数通过一定的规则将一个数据集划分为若干个小的区域,然后针对若干个小区域进行统计汇总,般用于对查询结果分组统计,常与聚…

    Linux系统 2025年6月13日
  • 详解Vim插件:Python-mode

    Python-mode 是一个 vim 插件,允许你在 vim 编辑器中使用工具:pylint, rope, pydoc, pyflakes, pep8, mccabe ,用来对 …

    Linux系统 2025年6月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注