当程序对输入执行操作并将结果写入标准输出时,它被称为过滤器。过滤器最常见的用途之一是重构输出。我们将在下面讨论几个最重要的过滤器。
正如我们在 第 3.3.3.4 节 中看到的,grep 逐行扫描输出,搜索匹配的模式。所有包含该模式的行都将被打印到标准输出。可以使用以下-v选项反转此行为。
一些示例:假设我们想知道某个目录中哪些文件在二月份被修改过
jenny:~> ls -la | grep Feb |
grep 命令与大多数命令一样,是区分大小写的。使用-i选项可以忽略大小写之间的差异。许多 GNU 扩展也可用,例如--colour,这有助于突出长行中的搜索词,以及--after-context,它打印最后一个匹配行之后的行数。您可以使用以下-r选项发出递归 grep,搜索遇到的所有子目录。与往常一样,选项可以组合使用。
可以使用正则表达式来进一步详细说明您想从所有输入行中选择的确切字符匹配项。开始学习正则表达式的最佳方法是阅读 grep 文档。grep Info 页面中包含一个精彩的章节。由于深入讨论正则表达式的来龙去脉会使我们跑题太远,因此强烈建议您从这里开始学习,如果您想了解更多关于它们的信息。
稍微玩一下 grep,花一些时间在这个最基本但非常强大的过滤命令上是值得的。本章末尾的练习将帮助您入门,请参阅 第 5.5 节。
默认情况下,sort 命令按字母顺序排列行
thomas:~> cat people-I-like | sort Auntie Emmy Boyfriend Dad Grandma Mum My boss |
但是 sort 可以做更多的事情。例如,查看文件大小。使用此命令,目录内容将按文件大小排序,从小到大
ls-la| sort-nk 5
![]() | 旧的 sort 语法 |
---|---|
您可以使用 ls -la | sort +4n 获得相同的结果,但这是一种不符合当前标准的旧形式。 |
sort 命令也与 uniq 程序(或 sort -u)结合使用,以对输出进行排序并过滤掉重复条目。
thomas:~> cat itemlist 1 4 2 5 34 567 432 567 34 555 thomas:~> sort itemlist | uniq 1 2 34 4 432 5 555 567 |