有时候,我们可以把两个命令连起来使用,一个命令的输出作为另一个命令的输入,这就叫做管道。为了建立管道,需要在两个命令之间使用竖线(|)连接。
管道是Linux进程之间一种重要的通信机制;除了管道,还有共享内存、消息队列、信号、套接字(socket) 等进程通信机制。
管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
能够接受数据,过滤(处理或筛选)后再输出的工具,称为过滤器。
grep命令
grep 是一个强大的文本搜索工具,可以使用正则表达式,并返回匹配的行,语法为:
引用
$grep pattern file(s)
“grep”源于 ed(Linux的一个行文本编辑器)的 g/re/p 命令,g/re/p 是“globally search for a regular expression and print all lines containing it”的缩写,意思是使用正则表达式进行全局检索,并把匹配的行打印出来。
正则表达式是一个包含了若干特殊字符的字符串,每个字符都有特殊含义,可以用来匹配文本,更多信息请查看正则表达式教程。
grep 可以看做是一个过滤器,如果没有为 grep 指定要检索的文件,那么它会从标准输入设备(一般是键盘)读取;其他过滤器也是如此。
grep 命令最简单的使用就是检索包含固定字符的文本。
例如,在管道中使用 grep 命令,只允许包含指定字符的行输出到显示器:
引用
$ls -l | grep "Aug"
-rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
$
grep 命令有很多选项:
选项 说明 |
|
-v 反转查询,输出不匹配的行。例如,grep -v "test" demo.txt 将输出不包含"test"的行。 |
|
-n 输出匹配的行以及行号。 |
|
-l 输出匹配的行所在的文件名。 |
|
-c 输出匹配的总行数。 |
|
-i 不区分大小写进行匹配。 |
下面我们使用正则表达式来匹配这样的行:包含字符“carol”,然后包含任意数目(含零个)的其他字符,最后还要包含“Aug”。
使用 -i 选项进行不区分大小写的匹配:
引用
$ls -l | grep -i "carol.*aug"
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
$
sort命令
sort 命令在 Linux 中非常有用,它将文件中的各行按字母或数进行排序。sort命令既可以从特定的文件,也可以从stdin获取输入。
例如,对 foot 文件的各行进行排序:
引用
$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java
Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$
通过下面的选项可以控制排序规则:
选项 描述
-n 按照数字大小排序,例如,10会排在2后面;-n 选项会忽略空格或 tab缩进。
-r 降序排序。sort 默认是升序排序。
-f 不区分大小写。
+x 对第x列(从0开始)进行排序。
下面的例子通过管道将 ls、grep 和 sort 命令连起来使用,过滤包含“Aug”的行,并按照文件大小排序:
引用
$ls -l | grep "Aug" | sort +4n
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02
$
上面的命令,对当前目录中八月份修改的文件按照大小排序;+4n 表示对第5列按照数字大小排序。
pg和more命令
如果文件内容过多,全部显示会很乱,可以使用 pg 和 more 命令分页显示,每次只显示一屏。
例如,通过管道,使用more命令显示目录中的文件:
引用
$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-r-- 1 john doc 14827 Aug 9 12:40 ch03
.
.
.
-rw-rw-rw- 1 john doc 16867 Aug 6 15:56 ch05
--More--(74%)
如上,一次只显示一屏文本,显示满后,停下来,并提示已显示全部内容的百分比,按空格键(space)可以查看下一屏,按 b 键可以查看上一屏。
分享到:
相关推荐
管道-过滤器模式是软件设计中的一个经典概念,尤其在早期的UNIX系统和现代的Linux环境中广泛使用。这种模式将复杂的数据处理任务分解为一系列独立的、可复用的组件,每个组件(过滤器)专注于数据的一个特定方面,...
### UNIX/Linux管道通信详解 #### 一、管道的概念与特性 **管道**是UNIX操作系统中最核心也是最具特色的功能之一。其主要用途在于实现进程间的数据通信。从功能角度来看,管道提供了一个高效的进程间数据传输通道...
本文将深入探讨“命令解释器”这一主题,以及它在Linux中的应用,特别是涉及的“管道”和“重定向”功能。 命令解释器,也被称为shell,是操作系统与用户交互的一个关键组件。在Linux系统中,它接收用户的命令输入...
这些命令可以帮助用户在海量信息中迅速找到所需的资料,比如通过管道和过滤器组合命令来实现复杂的文本处理。 系统管理命令部分,会介绍如何管理Linux系统,包括进程管理、内存使用、磁盘空间检查、系统时间设置等...
管道和过滤器配置工具 安装 下载并安装 。 有说明:。 编辑local.ini文件,该文件通常可以在以下路径之/etc/couchdb/local.ini找到: /etc/couchdb/local.ini或/opt/local/etc/couchdb/local.ini [httpd] bind_...
文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页. 二. ...
2. **Linux管道** - **管道原理**:管道允许将一个命令的输出作为另一个命令的输入,使用竖线`|`来连接。例如,`ls -l | grep ".txt"`会列出所有以`.txt`结尾的文件。 - **less和tee命令**:`less`用于分页查看...
解压后,用户应根据自己的需求编辑配置文件(通常是`config/logstash.conf`),定义输入、过滤器和输出插件的配置。 使用Logstash的一个关键步骤是编写有效的配置文件。配置文件采用基于Ruby的DSL(领域特定语言)...
本书首先会介绍Linux Shell的基础知识,包括什么是Shell、常见的Shell类型(如Bash、Sh、Csh等)、如何启动和退出Shell,以及Shell的基本命令,如文件和目录管理、输入/输出重定向、管道和过滤器等。这些基础知识是...
4. **Linux实用工具**:除了内核和Shell,Linux还包含一系列实用工具,如文本编辑器(如Vi、Emacs)、过滤器(用于数据处理)和交互程序(如用于用户间通信)。过滤器可以串联使用,形成管道,提高数据处理效率。...
7. 第六章“重定向”详细介绍了Linux中的重定向概念,包括标准输入、输出和错误,以及如何使用`cat`、管道线、过滤器等技术处理数据流。 8. 第七章“从shell眼中看世界”涉及了各种展开技术,包括字符展开、路径名...
Linux及Linux Shell简介、初识Linux Shell、常用Shell(Bash)命令、Shell命令进阶、Shell编程基础、Shell的条件执行、Bash循环、Shell函数、正则表达式、脚本输入处理、Shell重定向、管道和过滤器、捕获、sed和awk...
程序应小而专注,通过管道和过滤器互相连接,以完成复杂的任务。 2. **Shell和脚本编程**:Unix提供了一个强大的命令行界面,shell是用户与系统交互的主要工具。Bash(Bourne-Again SHell)是最常见的Linux shell,...
这一章可能详细解释了如何使用管道和过滤器组合命令,实现数据处理流水线。 **第13章 捕获.pptx** 这部分可能讲解了如何捕获命令的输出,包括标准输出和错误输出,以及如何使用`$?`获取命令的退出状态。 **第14章 ...
Vue.js中过滤器分为全局过滤器和本地过滤器。全局过滤器的作用域是整个Vue应用,而本地过滤器的作用域是定义它的Vue实例。 在Vue.js 2.0中,过滤器的定义和使用方式都有了相应的变化。自定义过滤器的创建非常简单,...
重定向是Linux命令行中的一个重要概念,文档通过多个例子展示了如何重定向标准输入、输出和错误信息,以及如何使用管道和过滤器来处理数据。 对于想要提高效率的用户,文档提供了键盘高级操作技巧,例如如何进行...
- 文件查找和过滤工具如find、grep等 4. **第四章:The Linux Environment(Linux环境)** - **主要内容**:深入探讨Linux系统的组成和工作原理。 - **知识点**: - 进程管理和调度机制 - 内存管理和虚拟内存 ...
在Vue中,过滤器的使用灵感来源于Linux shell命令的管道(pipe)概念。管道允许我们将一个命令的输出作为另一个命令的输入。同样,Vue的过滤器可以串联使用,例如`{{数据 | 过滤器A | 过滤器B}}`,这里的`数据`经过`...
- `sed`(流编辑器,用于文本转换和过滤) - `awk`(强大的文本分析工具) - `cut`(截取文件中的字段) - `sort`(排序文件内容) - `uniq`(去除重复行) - `join`(合并两个文件的指定列) - `tr`(字符替换和...