linux系统学习之Linux管道和过滤器

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 命令,只容许包含指定字符的行输出到显示器:shell

$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 命令有不少选项:
express

选项 说明
-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
$

经过下面的选项能够控制排序规则:
ui

选项 描述
-n 按照数字大小排序,例如,10会排在2后面;-n 选项会忽略空格或 tab缩进。
-r 降序排序。sort 默认是升序排序。
-f 不区分大小写。
+x 对第x列(从0开始)进行排序。


下面的例子经过管道将 ls、grep 和 sort 命令连起来使用,过滤包含“Aug”的行,并按照文件大小排序:spa

$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列按照数字大小排序。.net

pg和more命令

若是文件内容过多,所有显示会很乱,能够使用 pgmore 命令分页显示,每次只显示一屏。

例如,经过管道,使用more命令显示目录中的文件:code

$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 键能够查看上一屏。排序

相关文章
相关标签/搜索