Linux 基础之文本搜索工具grep

一、grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep

grep: 默认支持基本正则表达式;
egrep: 扩展正则表达式;
fgrep: 不支持正则表达式元字符,搜索字符串的速度快

二、通过man手册获取grep帮助信息:

#man grep

GREP(1)                                                                GREP(1)

NAME
       grep, egrep, fgrep - print lines matching a pattern

SYNOPSIS
       grep [options] PATTERN [FILE...]
       grep [options] [-e PATTERN | -f FILE] [FILE...]

DESCRIPTION
       Grep  searches  the  named input FILEs (or standard input if no files are named, or the file name - is given) for
       lines containing a match to the given PATTERN.  By default, grep prints the matching lines.

In addition, two variant programs egrep and fgrep are available.  Egrep is the same as  grep -E.   Fgrep  is  the
       same as grep -F.

三、grep的常用选项

--color=auto
        export GREP_COLOR=‘01;36‘
    -v: 反向选取,只显示不符合模式的行;
    -o: 只显示被模式匹配到的字串,而不是整个行;
    -i: 不区分字符大小写;
    -A #:显示匹配到的行时,顺带显示其后面的#个行;
        -A 2
    -B #:前面的#行;
    -C #:前后的#行;

-E: 使用扩展的正则表达式
        grep -E = egrep

三、grep正则表达式基本元字符集

元字符:不表示字符本身的意义,而用于额外功能性的描述

^:锚定行首的符合条件的内容

# grep "^root" /etc/passwd //搜索以root开头的行


$: 锚定行尾的符合条件的内容

#grep “bash$” /etc/passwd //搜索以bash结尾的行

.: 匹配任意单个字符

匹配s和l之间有单个任意字符的内容

*:匹配紧挨在其前面的字符任意次(包含0次)

匹配k前面有0个或任意个s

[]:匹配指定范围内的任意单个字符

匹配D或d中间包含两个任意字符并以n结尾的行


[^]:匹配指定范围外的任意单个字符

#grep "[^A-Z].*a" text --color=auto  //匹配任意一个非大与字母后面面跟0个或多个任意字符以a结尾的行


\?: 匹配紧挨在其前面的字符0次或1次;

匹配b之前有0个或1个a

匹配a和b之前有0个或1个任意字符

\{m,n\}: 匹配其前面的字符至少m次,至多n次;
            \{0,n\}: 至多n次;0-n次;
            \{m,\}:至少m次
            \{m\}: 精确匹配m次;

匹配b 前面的a 至少1次至多2次

\<: 锚定词首,用法格式:\<pattern
            \b: \bpattern

搜索以root为词首的行

  \>: 锚定词尾,用法格式:pattern\>
            \b: pattern\b

搜索以root为词尾的行


           \<pattern\>:锚定单词

搜索包含root单词的行

\(\): 分组,用法格式: \(pattern\)

\1  :可以引用第一个分组匹配到的内容
\2  :可以引用第二个分组匹配到的内容

搜索R或r和d之间出现两个任意字符而后又跟0个或多个任意字符 ,并在其后引用匹配到的内容

字符集合

[:digit:] 所有数字 0-9

[:lower:] 所有小写字母  a-z

[:upper:] 所有大写字母 A-Z

[:punct:] 所有标点符号

[:space:] 表示空格或tab键

[:alpha:] 表示所有字母(包含大小写)a-zA-Z

[:alnum:] 表示所有字母和数字  a-zA-Z0-9

注:非需要这样表示[^[] ], 如[[:space :]]表示空格 [^[:space:]] 表示非空

搜索/boot/grub/grub.conf 以空格开头的行

时间: 2024-10-16 14:24:27

Linux 基础之文本搜索工具grep的相关文章

Linux基础之文本处理工具grep及正则表达式(附带egrep与grep的不同)

文本处理工具grep,正则表达式在Linux学习过程中很容易出现困惑与障碍的地方,这里分享下学习这方面内容的一些感受. grep Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的'模式(过滤条件)'对目标文本逐行进行匹配检查:打印匹配到的行: '模式':由正则表达式的元字符及文本字符所编写出的过滤条件. grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS]

Linux命令之文本搜索工具grep、egrep、fgrep

grep即global search regular expression_r(RE) and print out the line,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep家族包括grep.egrep和fgrep:egrep是grep的扩展:fgrep查找一个或多个与给出的字符串或词组相匹配文件中的行,不支持规则表达式 语法:grep [OPTIONS] PATTERN [FILE...] 常用参数选项 --color=auto:对匹配到的串做高亮

Linux中文本搜索工具“grep”命令详解

人生中应该有两次冲动,一次是轰轰烈烈的爱情,一次是说走就走的旅行.我属于第三种,轰轰烈烈的辞职然后马不停蹄的参加了马哥的linux面授班,两周时间内对linux有了些初步的了解,与此同时,两周内八天课程中的各种定义.概念.原理.命令由于量大.琐碎,也着实给我们这些小白一个下马威,即使每天11点撤退也觉得时间不够用.鉴于对自己的负责和马哥的作业要求,特对文本搜索工具grep写些使用指南,其中可能会有描述不确切或有偏颇之处,望及时指正. 开始--. 首先,要说一下grep是什么,用在什么地方. gr

正则表达式和文本搜索工具grep

正则表达式是由字面文本和具有特殊意义的符号组成的.我们可以根据具体需求,使用它们构造出合适的正则表达式来匹配文本.它是一种匹配文本的通用语言.正则表达式是模式匹配技术的核心,借助合适的正则表达式,可以生成我们所需的各类输出结果,例如过滤.剥离.替换.搜索等. 正则表达式的基本组成部分 ^ #行起始标记(使用cat -a显示空格,行首,行尾等标记.) #示例 ^It 匹配以It起始的行 $ #行尾标记 #示例 It$ 匹配以It结尾的行 . #匹配任意一个字符 #示例:Hack.匹配Hackl和H

文本搜索工具grep,egrep,fgrep的区别

一.grep 1.用途:文本搜索工具,根据用户指定的文本模式(patten)对目标文件进行逐行搜索,显示能够被模式匹配的行内容. 2.命令使用格式: grep [option] ' PATTEN 'files- 2.1 常用选项详解 2.1.1 单文件查找: -n:显示匹配行的行号(为了显示清楚匹配行,下面的都用n+其他选项) -v :反向匹配(即显示非匹配行) –> 常用于过滤掉一些无关的信息,增加显示信息的可读性. ※第一个[5]就是指第5行被匹配. -o:只显示行中被模式所匹配的字符串,而

Linux下文本搜索工具grep命令使用入门

grep命令入门 如果想通过使用grep命令来实现理想化的文本搜索,对正则表达式的了解是比不可少的.文献1对正则表达式语法做了一个简单的介绍,文献2提供了一个简单的入门.码农也可以自己google一下其他的参考资料.下面就grep命令的使用做个入门级的介绍. 1.1 grep命令的变种 linux下除了grep命令可以完成文本搜索外,还存在egrep,fgrep,rgrep三个命令.这三个命令都是由grep加上一些控制参数演变而来,如egrep=grep -E, fgrep=grep -F, r

linux基础--awk文本分析工具详解

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

Linux之文本搜索工具grep

grep功能:根据模式搜索文本,并将符合模式的文本行显示出来 PATTERN:模式,即文本字符和正则表达式的元字符组合而成的匹配条件 1 通配符: *:任意长度的任意字符 ?:任意单个字符 []:匹配指定范围内的任意单个字符 [^]:与[]相反 2 正则表达式: 元字符: .:匹配任意单个字符 *:匹配次数(工作在贪婪模式下,尽可能长的匹配), 匹配其前面的字符任意个 .*:任意长度的任意字符 \?:匹配其前面的字符1次或0次 \{m,n\}:匹配其前面的字符至少m次,至多n次 \{1,\}:匹

文本搜索工具Grep、Egrep的简单应用

 Grep是一个最初用于Unix操作系统的命令行工具.在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本. 使用格式: grep [选项] '内容' files   或 命令 | grep [选项] '内容' 常用选项: --color: 显示内容高亮 -v:反向选取(即显示除了用户定义的内容以外的内容) -o:仅显示匹配的内容 -i :忽略字符大小写 -E:使用扩展正则表达式  Egrep命令是一个搜索文件获得模式,使用该命令可