在以前的部分awk的Knife系列中,我们看到从一个文件(S)读取输入居多,但如果你想从STDIN读取输入的内容。
在Awk系列的第7部分,我们将看几个例子,你可以过滤其他命令的输出,而不是从文件读取输入。
我们将与启动目录工具的工作原理类似于ls命令 ,在下面的第一个例子中,我们使用的输出dir -l
命令输入awk的打印所有者的用户名,组名和他/她拥有在当前目录下的文件:
# dir -l | awk '{print $3, $4, $9;}'
列出用户在目录中拥有的文件
看看我们另外一个例子使用的awk表达式 ,在这里,我们希望通过使用表达式过滤字符串,如下面的awk命令打印由root用户拥有的文件:
# dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '
列出Root用户拥有的文件
上面的命令包括(==)
比较运算符来帮助我们筛选出文件这是由root用户所拥有的当前目录。 这是使用表达式实现$3==”root”
。
让我们来看看在这里我们使用一个另一个例子awk的比较操作 ,以符合特定的字符串。
在这里,我们使用cat命令来查看文件名为youcl_deals.txt的内容,我们只需要查看型技术的交易,所以我们应运行以下命令:
# cat youcl_deals.txt # cat youcl_deals.txt | awk '$4 ~ /tech/{print}' # cat youcl_deals.txt | awk '$4 ~ /Tech/{print}'
使用Awk比较运算符匹配字符串
在上面的例子中,我们已经使用了值~ /pattern/
比较运算符,但有两个命令来尝试和带出一些非常重要的。
当您运行模式高科技没有什么命令打印出来,因为没有这种类型的交易 ,但有技术 ,你会得到技术型的交易。
所以在使用这个比较运算符时一定要小心,它是大小写敏感的,如我们上面看到的。
你可以总是使用另一个命令的输出作为awk的输入,而不是从文件中读取输入,这是非常简单的,我们在上面的例子中看到。
希望的例子是明确的足够你明白,如果你有任何疑问,您可以通过下面的评论部分表达出来,并记得要检查该系列的下一部分,我们将在awk的功能,如变量 , 数字表达式 ,并期待赋值操作符 。