管道是Linux中进程间通信的一种方式,一个进程可以将自己的数据通过管道传递给另一个进程。

    管道是Linux中进程间通信的一种方式,一个进程可以将自己的数据通过管道传递给另一个进程。

    在Linux命令行中,可以通过'|'符来创建一个管道,'|'符左侧程序的执行结果,会通过管道成为右侧程序的输入数据。例如:我们可以使用cat程序输出文件的内容,然后通过管道将输出内容传递给less程序:

cat filename | less

    将文件内容传递给less程序后,你就可以使用上下方向键以滚动的方式来查看内容,还可以在less中执行搜索内容等操作:

    除了less命令外,你还可以使用more命令来查看接收到的管道数据:

cat Filename | more

    不过more命令在接收到数据后,只能通过回车键向下滚动数据,无法向上滚动,当按回车查看到数据结尾处时,会自动退出more程序。

'grep'命令

    如果你想在一大段文档信息中查找指定的内容,就可以使用grep命令。该命令会扫描整个文档,并将文档中需要查找的信息,以你希望的格式显示出来。该命令的格式如下:

grep search_string

    上面的search_string表示需要搜索的字符串,例如下面这个例子:

    上例中,先通过cat读取sample文件的内容,再将文件内容通过管道传递给grep程序,grep会扫描整个文件内容,并将包含'Apple'和'Eat'的文本行给显示出来,默认情况下,它还对搜索字符串进行了高亮处理。

    该命令还包含一些有用的选项,如下表所示:

 选项   功能描述 
 -v  将所有不包含搜索字符串的行显示出来 
 -c  只显示搜索到的行数
 -n  显示搜索到的行和对应的行号
 -i  搜索时不区分大小写
 -l  只显示搜索来源对应的文件名

    例如,我们可以使用-i参数进行不区分大小写的搜索操作:

'sort'命令

    sort命令可以按字母顺序来排列文件的内容,该命令的格式如下:

sort Filename

    Filename是要进行排序的文件名,假设有个名为'abc'的文件的内容如下:

    那么使用sort命令对该文件的内容进行排序,得到的结果会是:

    该命令也支持一些选项,可以扩展此命令的能力,如下表所示:

 选项   功能描述 
 -r  反向排序,如果正常排序是a,b,c,那么反向排序就会是c,b,a 
 -n  以数字类型排序,当文件的内容都是数字形式时,就适合用这种方式来排序 
 -f  排序时不区分大小写

    下面例子显示了通过sort命令和-r参数来进行反向排序:

通过管道对内容进行多层处理

    我们可以通过管道,将数据一层层的传递下去,每层做一个处理,从而通过一条命令来得到最终所需的结果。

    例如,我们可以先通过cat命令获取文件的内容,再通过管道将文件内容传递给grep,用grep筛选出指定内容,最后将grep筛选的结果再通过管道传递给sort程序,由sort对grep的结果进行排序处理,如下所示:

 

上下篇

下一篇: 在Linux命令行中使用正则表达式

上一篇: Linux系统中的输入和输出重定向

相关文章

Linux系统中使用quotaon命令:开启磁盘配额限制

Linux中的ps命令详解:查看正在运行的进程

Linux常用命令:ls显示文件列表,cat查看文件,rm删除文件

Linux中的进程管理及作用

Linux和Windows的不同之处

Linux中的rsync命令用法详解