grep命令及基本正则表达式

grep

NAME:名称

grep:Global search REgular expression and Print out the line

文本搜索工具,根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行。

SYNOPSIS:摘要,命令使用摘要

grep [OPTION] ...‘PATTERN’ FILE...

--color 将匹配到的内容加颜色高亮显示

例:

注:--color=auto:自动加颜色高亮显示

输出结果含‘user’都加颜色高亮显示

为了以后的方便可以用alias命令别名

输入alias grep=‘grep --color=auto‘

正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能。

例:在windows中*代表任意长度,任意的字符。

元字符:字符不表示字符的字面意义,而是表示控制或通配的功能就叫做元字符。

例:*就是一个元字符

正则表达式分两类:基本正则表达式和扩展正则表达式。

基本正则表达式:

字符匹配:
                            .    :匹配任意单个字符
               例:
                                      
                注:所有以r开头以t结尾的字符都高亮

[]  :匹配指定集合中的任意单个字符

例:grep ‘r[a-z][a-z]t‘ /etc/passwd

注:所有以r开头以t结尾,中间是小写字母的字符都高亮

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

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

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

[[:alpha:]] = [a-zA-Z] 所有字母

[[:alnum:]] = [0-9a-zA-Z] 所有字母和数字

[[:space:]]            所有的换行符,空格符,制表符

[[:punct:]]            所有的标点符号

上例也可以这样输入命令

grep ‘r[[:alpha:]][[:alpha:]]t‘ /etc/passwd 也是一样的结果

[^]  :匹配指定集合外的任意单个字符(和[]相反)

次数匹配:用于对其前面紧邻的字符所能够出现的次数作出限定。

*      :匹配其前面任意次,0,1或多次;

例:我们先创建个文件a.txt里面有xy sy aby abc字符的文件

注:如上,匹配y其前面n个字符的行,就是显示以y结尾的所有行。那么问题来了,如果我们需要匹配指定次数的呢?

\?    :匹配其前面出现的字符0次或1次

匹配其前面出现的字符只能出现一次,或者不出现

例:grep ‘x\?y‘ a.txt

注:匹配y其前面的x只能出现一次,或者不出现

\+      匹配其前面的字符出现至少一次;

例:

注:匹配x字符至少要出现一次。

\{m\}  :匹配其前面的字符至少m次;

例:grep ‘x\{3\}y‘ !$

注:显示x至少出现3次,!$的意思是最近命令的参数

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

例: grep ‘x\{2,5\}y‘ a.txt

注:显示x至少出现2次,至多5次。是m-n次

.*      :匹配任意长度的任意字符

例:grep ‘r.*t‘ /etc/passwd

注:.是任意单个字符,*是任意字符次数 2个加起来就是任意字符任意次数

位置锚定:也就是位置锁定,指定其出现在什么位置上面

^   :行首锚定,必须出现在最左侧

例:grep ‘^r[[:alpha:]][[:alpha:]]t‘ /etc/passwd

注:[[:alpha:]]代表所有的字母,显示r为行首,中间2个所有字母的字符,t为尾部

$   :行尾锚定,必须出现在最右侧

例:grep ‘.*sh$‘ /etc/passwd

注:显示sh结尾的所有行

^$    空白行:行首与到行尾。

\<:词首锚定,

出现在要查找的单词模式的左侧:\<char

例:grep ‘\<r..t‘ /etc/passwd

注:匹配r是这个单词的词首,t是这个单词的词尾,..表示任意符号单个字符^表示行首。

\>:词尾锚定,也可以用\b

出现在要查找的单词模式的右侧:char\>

例:grep ‘bash\>‘ /etc/passwd

注:显示passwd文件中,所有单词bash在右侧的文件。

\<pattern\>:匹配单词    pattern类似于单词

例:grep ‘\<user\>‘ /etc/passwd

注:上例显示\<\>中间字符的所有的行。

\<pattern\> 是\<词首锚定和\>词尾锚定,中间加个单词的组合。这代表一个单词

分组:\(\)   在bash中{}(花括号),()小括号也有特殊意思,所以在这里需要用\做转意符

\{m,n\}  是次数锚定的  最少为m次,最多n次

例:abababx.txt文件中有下列字符

输入命令:grep ‘\(ab\)\{1,3\}‘ abababx.txt

注:此显示ab循环  \(ab\)为最少一次最多3次\{1,3\}的行

后向引用:模式中,如果使用\(\)实现了分组,在某行文本的检查中,如果括号中的模式匹配到了某内容,次内容后面的模式中可以被引用;

\1,\2,\3   第一个括号,第二个括号,第三个括号

模式自左而右,引用第#个左括号以及与其匹配右括号之间的模式匹配到的内容。

例:grep ‘\(a.b\).*\1‘ abababx.txt

注:(a.b):是a开头中间跟任意字符,b结尾

.*  :任意字符任意长度

显示含(a.b),中间可以是.*,但后面还含有(a,b)的所有行

grep选项:

-v:反向选取;总体反向选取。

例:abababx.txt有下列文件,输入命令grep -v ‘123‘ abababx.txt后。查看abababx.txt文件中不包含123的行,空白行也算。

-o:仅显示匹配到的内容

例:grep -o ‘123‘ abababx.txt

注:显示查找到的123,并且就显示123

-i:忽略字符大小写

-E:使用扩展正则表达式

-A #:显示查找的到文件并显示下面#行

例:grep -A 3 ‘root‘ /etc/passwd

注:查找含root的的行并显示其下面3行,查找到第二个用--隔开并继续显示下面3行

-B #:显示上面#行

-C #:显示上下#行

来自为知笔记(Wiz)

时间: 2024-10-25 11:17:46

grep命令及基本正则表达式的相关文章

Linux grep 命令中的正则表达式详解

在 Linux .类 Unix 系统中我该如何使用 Grep 命令的正则表达式呢? Linux 附带有 GNU grep 命令工具,它支持扩展正则表达式(extended regular expressions),而且 GNU grep 在所有的 Linux 系统中都是默认有的.Grep 命令被用于搜索定位存储在您服务器或工作站上的任何信息. 正则表达式 正则表达式就是用于匹配每行输入的一种模式,模式是指一串字符序列.下面是范例: ^w1 w1|w2 [^ ] grep 正则表达式示例 在 /e

Linux grep命令用法以及正则表达式

1.grep命令和正则表达式的简介 (1).grep(Global search REgular expression and Print out the line),即全局搜索正则表达式并打印出匹配的行,它是Linux系统中一个强大的文本搜索工具,它根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行: (2).正则表达式是由一类字符书写的模式,其中有些字符不表示符的字面意义,而是表示控制或通配的功能 2.grep命令的基本语法格式 grep [OPTIO

Linux操作系统基础解析之(五)——grep命令家族及正则表达式初识

grep号称文本处理三剑客之一,虽然说是三剑客中功能最少也是最简单的,但仍然不能小觑.  grep的全称为:Global search REgular expression and Print out the line,即:全面查找正则表达式并将匹配的行显示出来. 那么这里面出现了一个新的概念:正则表达式.那么什么是正则表达式呢? 正则表达式,又称正规表示法.常规表示法英语:(Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式

linux学习20 运维核心技能-grep命令与基本正则表达式

一.回顾 1.bash的特性:hash,变量 命令hash:hash命令 变量: 本地变量,环境变量,局部变量 位置参数变量,特殊变量 变量赋值:name=value,export name=value,declare -x name=value 变量引用:$name,${name} 变量撤销:unset name 2.bash脚本编程,运行脚本 #!/bin/bash # 3.bash的配置文件 profile类:登陆式shell bashrc类:非登录式shell 登录式shell: /et

grep命令的常用选项

Linux的grep命令是使用正则表达式进行文本搜索的,一些对程序员很有用的选项如下: -i   忽略大小写 -w  进行普通文件匹配,而不是正则表达式匹配 -c  只统计每个文件中匹配行数(默认是输出匹配行) -n  输出匹配行的时候,文件名后面带上行号 -I  不要搜索二进制文件 -l  只打印匹配的文件名 -L  只打印不匹配的文件名 -v  输出不匹配的行

Shell编程之---grep命令详解

grep 一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来 grep [option]  [mode]  [file] -c       #只输出匹配行的数量 -i       #搜索时忽略大小写 -h       #查询多文件时不显示文件名 -l       #只列出符合匹配的文件名,而不列出具体的匹配行 -n   #列出所有的匹配行,并显示行号 -s   #不显示不存在或无匹配文本的错误信息 -v   #显示不包含匹配文本的所有行 -w   #匹配整词 -x   #匹

Linux &nbsp; &nbsp; grep命令,正则表达式

grep命令及正则表达式 grep命令 grep , egrep , fgrep grep,sed,awk 文本处理三剑客 grep: Global search REgular expression and Print out the line;全面查找正则表达式并将匹配到的行显示出来; 正则表达式 正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用;许多程序设计语言都支持利用正则表达式进行字符串操作; 主流的正则引擎又分为三类:DFA;传统型NFA;POSIX NFA; DFA

正则表达式和grep命令的用法

正则表达式和grep命令的用法: 一.正则表达式: 正则表达式(也称为regular Expression,简称RE)就是由普通字符(例如字符a到z)以及特殊字符(称之为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表示通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.gr

grep命令以及正则表达式,算数运算.

最近一段时间一直在学习算术运算和正则表达式以及条件判断,连续看了四五遍,基本概念已经能够搞清楚了,实际操作中容易把正则表达式和算术运算以及条件判断混淆.看来还是要勤加联系.今天终于是有勇气来总结这两周的学习.在这之前,因为在练习这些逻辑概念性的知识经常会用到grep命令.首先介绍一下grep. 格式:grep [options] 'PATTERN' file,... grep: 文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示文件中能够被模式所匹配到的行. 模式PATTERN:指