Linux命令(八)过滤文本 grep

grep 命令介绍

grep是一个强大的文本搜索工具命令,用于查找文件中符合指定格式的字符串,支持正则表达式。如不指定任何文件名称,或是文件名为 -,则gerp命令从标准输入设备中读取数据。

grep 家族包括grep egrepfgrep。 egrep 和 fgrep 命令只跟 grep 有很小的不同。 egrep 是 grep 的扩展 , fgrep 就是 fixed grep 或 fast grep,该命令使用任何正则表达式中的元字符表示其自身的字面意义,不在特殊。其中 egrep 就等同于 " grep -E" ,fgrep 等同于"grep -F"。(有点晕。。) Linux中的 grep 功能强大,支持很多参数,可以方便地用来进行文本处理工作。

grep 命令常用参数说明

-a  不要忽略二进制数据
-A  除了显示符合条件的那一行之外,并显示该列之后的内容

-b  在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号
-B  除了显示符合条件的那一行之外,并显示该列之前的内容

-c  计算符合结果的行数
-C  除了显示符合条件的那一行之外,并显示该列之前后的内容

-e  按指定的字符串查找
-E  按指定的字符串指定的正则查找

-f  指定范本文件,其内容含有一个或多范本样式
-F  将范本样式视为固定的字符串列表

-G  将范本样式视为普通的表示法来用

-h  在显示符合范本样式的那一列之前,不标示该列所属的文件名称
-H  在显示符合范本样式的那一列之前,标示该列所属的文件名称

-i  忽略字符大小写

-l  列出文件内容符合指定的范本样式的文件名称
-L  列出文件内容不符合指定的范本央视的文件名称

-n  在显示符合范本样式的那一列之前,标示出该列的列数编号

-q  不显示任何信息

-r  在指定路径中递归查找

-s  不显示错误信息

-v  反向查找
-V  显示版本信息

-w  匹配整个单词

-x  只显示全列符合的列
--help  在线帮助

grep 单独使用时至少有两个参数,如少于两个参数,grep 会一直等待,直到该程序被中断。如果遇到这样的情况,可以使用 Ctrl + c 终止。 默认情况下只搜索当前目录,如果递归查找子目录,可使用-r选项。

grep命令使用方法

在指定的文件中查找字符串:

grep root  /etc/passwd    在 /etc/passwd  中查找 root 字符串

结合管道一起使用:

cat /etc/passwd   | grep root

grep mysql  my.cnf | grep datadir

查找符合条件的内容所在的行号:

grep -n root /etc/passed

在 nginx.conf 中查找包含 listen 的行号并打印出来:

grep listen  nginx.conf

查找指定字符串:

grep uuid  test.txt    区分大小写
grep UUID  test.txt    区分大小写

grep -i uuid test.txt  不区分大小写

列出匹配字符串的文件名:

grep -l uuid test.txt

列出不匹配字符串的文件名:

grep -L uuid test.txt

匹配整个单词:

gerp -w UU    test.txt
grep -w UUID   test.txt

除了显示匹配的行,分别显示该行上下文的 n 行:

grep -C1 UUID test.txt  此处 n = 1 ,跟在 -C 参数后面

按正则表达式查找指定字符串:

grep -n  -E  "^[a-z]+"   test.txt
grep -n  -E  "^[^a-z]+"  test.txt

grep  -E   "datadir | socket"  my.cnf

递归查找:

grep -r var . | head -3

grep 正则参数说明

^   指定匹配字符串的行首
$   指定匹配字符串的结尾
*   表示0个以上的字符
+   表示1个以上的字符
\   去掉指定字符的特殊含义

^   指定行的开始
$   指定行的结束
.   匹配一个非换行的字符
*   匹配零个或多个先前字符

[]  匹配一个指定范围内的字符
[^] 匹配一个不在指定范围内的字符

\(..\)  标记匹配字符
<   指定单词的开始
>   指定单词的结束

x{m}    重复字符 x,m 次
x{m},   重复字符 x, 至少 m 次
x{m,n}  重复字符x, 至少 m 次,不多于 n 次

w   匹配文字和数字字符,也就是 [A-Za-z0-9]
b   单词锁定符

+   匹配一个或多个先前的字符
?   匹配零个或多个先前的字符

a|b|c   匹配 a 或 b 或 c

()  分组符号    

[:alnum:]   文字数字字符

[:alpha:]   文字字符

[:digit:]   数字字符

[:graph:]   非空格、控制字符

[:lower:]   小写字符

[:cntrl:]   控制字符

[:print:]   非空字符(包括空格)

[:punct:]   标点符号

[:space:]   所有空白字符(新行,空格,制表符)

[:upper:]   大写字符

[:xdigit:]  十六进制数(0-9,a-f,A-F)

原文地址:https://www.cnblogs.com/ay-a/p/8206832.html

时间: 2024-10-17 16:10:08

Linux命令(八)过滤文本 grep的相关文章

转摘--如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等

http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核. 借用卡通人物Cartman的话,“如何我能使用这些内核”? 要想让Lin

linux命令:awk文本处理命令

   awk命令简介: awk是一个强大的文本分析工具,通常,awk是以文件的每一行,为处理单位的.awk每接收文件的一行,然后执行相应的命令,来处理文本. 1.命令格式: awk 'pattern {action}' {filenames} 其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所 执行的一系列命令.花括号({})不需要在程序中始终出现,但它们用于根据特定的 模式对一系列指令进行分组. pattern就是要表示的正则表达式,用斜杠括起来.

Linux命令(1)- grep

1.grep 功能:查找文件里符合条件的字符串. 语法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...] 补充说明:grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来.若

linux命令(8)---简单文本处理命令

sort命令,sort lines of text files [功能]:将文本内容按照指定的排序,并将其内容显示在标准输出上,默认sort filename表示默认第一字符,按照升序查看文件, [语法] sort options filename [常用选项] -r,表示按照第一字符默认降序查看文件(逆序显示) -f,--ignore-case:表示忽略大小写,linux系统默认区分大小写 -t,--field-separator=SEP:表示指定分隔符 -k,--key=POS1[,POS2

Linux命令(23)grep命令的使用

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 选项 : -a 不要忽略二进制数据. -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容. -b 在显示符合范本样式的那一行之外,并显示该行之前的内容. -c 计算符合范本样式的列数. -C<显示列数>或-<显示列数

Linux 命令行下的最佳文本编辑器

文本编辑软件在任何操作系统上都是必备的软件.我们在 Linux 上不缺乏非常现代化的编辑软件,但是它们都是基于 GUI(图形界面)的编辑软件. 正如你所了解的,Linux 真正的魅力在于命令行.当你正在用命令行工作时,你就需要一个可以在控制台窗口运行的文本编辑器. 正因为这个目的,兄弟连Linux培训专门准备了一个基于 Linux 命令行的文本编辑器清单. VIM 如果你已经使用 Linux 有一段时间,那么你肯定听到过 Vim .Vim 是一个高度可配置的.跨平台的.高效率的文本编辑器. 几乎

学习linux命令,看这篇2w多字的linux命令详解

用心分享,共同成长 没有什么比每天进步一点点更重要了 本文已收录到我的github:https://github.com/midou-tech/articles/tree/master/docs/linux ,欢迎star和issues. 序言 ?本篇文章主要讲解了一些linux常用命令,主要讲解模式是,命令介绍.命令参数格式.命令参数.命令常用参数示例.由于linux命令较多,我还特意选了一些日常使用较为频繁的命令进行讲解,但还是免不了文章很长,建议大家收藏起来,用到的时候不会了再来阅读.当然

学习linux命令,看这篇2W多字的命令详解就够了

用心分享,共同成长 没有什么比每天进步一点点更重要了 本文已收录到我的github:https://github.com/midou-tech/articles/tree/master/docs/linux ,欢迎star和issues. 序言  本篇文章主要讲解了一些linux常用命令,主要讲解模式是,命令介绍.命令参数格式.命令参数.命令常用参数示例.由于linux命令较多,我还特意选了一些日常使用较为频繁的命令进行讲解,但还是免不了文章很长,建议大家收藏起来,用到的时候不会了再来阅读.当然

Linux 命令之 linux 四剑客

Linux命令-- 四剑客 一:Linux命令 之 AWK 符号:^ 开头 $ 结尾 awk 是一种处理文本的语言,一个强大的文本分析命令! 1:提取文件中的每行的第二个 提取前文本中内容为  命令:cat 1.txt | awk '{print($2)}' 在 AWK 命令中,它将文本每列的部分当做一部分! 或着我们可以指定分隔符,指定提取某一部分! 我们以2为分隔符 命令:cat 1.txt | awk -F "2" '{print($2)}'  输出前三行 打印文件每行最后的字段