awk 系列Part7:awk 怎么从标准输入(STDIN)读取输入

awk 系列:awk 怎么从标准输入(STDIN)读取输入

awk 系列Part7:awk 怎么从标准输入(STDIN)读取输入

在 awk 系列的前几节,咱们看到大多数操做都是从一个文件或多个文件读取输入,或者你想要把标准输入做为 awk 的输入。html

在 awk 系列的第七节中,咱们将会看到几个例子,你能够筛选其余命令的输出代替从一个文件读取输入做为 awk 的输入。linux

咱们首先从使用 dir 命令开始,它相似于 ls 命令,在第一个例子下面,咱们使用 dir -l 命令的输出做为 awk 命令的输入,这样就能够打印出文件拥有者的用户名,所属组组名以及在当前路径下他/她拥有的文件。git

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

awk 系列Part7:awk 怎么从标准输入(STDIN)读取输入

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

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

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

awk 系列Part7:awk 怎么从标准输入(STDIN)读取输入

列出 root 用户的文件ide

上面的命令包含了 (==) 来进行比较操做,这帮助咱们在当前路径下筛选出 root 用户的文件。这是经过使用 $3=="root" 表达式实现的。code

让咱们再看另外一个例子,咱们使用一个 awk 比较运算符 来匹配一个肯定的字符串。htm

这里,咱们使用了 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 系列Part7:awk 怎么从标准输入(STDIN)读取输入

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

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

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

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

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

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


via: http://www.tecmint.com/read-awk-input-from-stdin-in-linux/

做者:Aaron Kili
译者:vim-kakali
校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关文章
相关标签/搜索