Linux - 管道&过滤器

Linux - 管道&过滤器 首页 / Linux入门教程 / Linux - 管道&过滤器

在本章中,我们将详细讨论Unix中的管道(Pipes)和过滤器(Filters)。您可以将两个命令连接在一起,以便一个程序的输出成为下一个程序的输入。以这种方式连接的两个或多个命令形成管道。

grep 命令

grep命令在一个文件或多个文件中搜索具有特定模式的行。语法是-

$grep pattern file(s)

名称" grep" 来自ed(Unix行编辑器)命令 g/re/p ,意思是"全局搜索正则表达式"。

无涯教程网

grep的最简单用法是查找由单个单词组成的模式。它可以在管道中使用,以便仅将包含给定字符串的输入文件的那些行发送到标准输出。如果不给grep提供要读取的文件名,它将读取其标准输入;

链接:https://www.learnfk.comhttps://www.learnfk.com/linux/linux-pipes-filters.html

来源:LearnFk无涯教程网

$ls -l | grep "Aug"
-rw-rw-rw-   1 learnfk  doc     11008 Aug  6 14:10 ch02
-rw-rw-rw-   1 learnfk  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--   1 learnfk  doc      2488 Aug 15 10:51 intro
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

您可以将各种选项与 grep 命令一起使用-

Sr.No.Option & 描述
1

-v

打印所有与模式不匹配的行。

2

-n

打印匹配的行及其行号。

3

-l 

仅打印带有匹配行的文件名(字母" l")

4

-c

仅打印匹配行的计数。

5

-i

匹配大写或小写。

现在让我们使用一个正则表达式,告诉grep查找带有" carol" 的行,后跟零个或其他在正则表达式中缩写为".*"的字符,然后是" Aug"。 -

在这里,我们使用 -i 选项进行不区分大小写的搜索-

$ls -l | grep -i "carol.*aug"
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

排序(Sort)命令

sort 命令按字母或数字排列文本行。以下示例对食物文件中的行进行排序-

$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java

Mandalay
Sushi and Sashimi
Sweet Tooth
learnfk.com
$

sort 命令默认情况下按字母顺序排列文本行。有很多选项可以控制排序-

Sr.No.描述
1

-n

数字排序,忽略空格和制表符。

2

-r

颠倒排序顺序。

3

-f

大写和小写一起排序。

4

+x

排序时忽略前x个字段。

一个管道中可以链接两个以上的命令。以使用 grep 的上一个管道示例为例,我们可以进一步按大小顺序对8月份修改的文件进行排序。

以下管道由命令 ls , grep 和 sort 组成-

$ls -l | grep "Aug" | sort +4n
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 learnfk  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 learnfk  doc      8515 Aug  6 15:30 ch07
-rw-rw-rw-  1 learnfk  doc     11008 Aug  6 14:10 ch02
$

pg 和 more 命令

通常,您可以在屏幕上压缩较长的输出,但是如果您通过更多内容运行文本或使用 pg 命令作为过滤器,请通过 more 将输出通过管道传递,如下所示:

$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 learnfk  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 learnfk  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--  1 learnfk  doc     14827 Aug  9 12:40 ch03
	.
	.
	.
-rw-rw-rw-  1 learnfk  doc     16867 Aug  6 15:56 ch05
--More--(74%)

一旦屏幕上充满了由按文件大小顺序排序的行组成的文本,则屏幕将填满,屏幕底部是More提示符,您可以在其中键入命令以在排序的文本中移动。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

持续交付36讲 -〔王潇俊〕

数据结构与算法之美 -〔王争〕

玩转Git三剑客 -〔苏玲〕

说透中台 -〔王健〕

视觉笔记入门课 -〔高伟〕

分布式金融架构课 -〔任杰〕

业务开发算法50讲 -〔黄清昊〕

深入浅出分布式技术原理 -〔陈现麟〕

零基础学Python(2023版) -〔尹会生〕

好记忆不如烂笔头。留下您的足迹吧 :)