Shell 正则表达式 基础

一、linux文本查找命令

三个基本常用的命令

1、grep:最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本

2、egrep:扩展式grep,其使用扩展式正则表达式(ERE)来匹配文本

3、fgrep:快速grep,这个版本匹配固定字符串而非正则表达式。

二、grep的基本语法

GREP [options … ] pattern-spec [files…]

用途:匹配一个或多个模式的文本行

options:

-E:使用扩展正则表达式进行匹配

-i:忽略大小写

--color 加以颜色可以添加别名

laias gerp =‘grep --color‘

-v:反向显示,没有被模式匹配到的行

-o:只显示被模式匹配到的字符串

-A(后面加数字):找到行显示行后面的n行

grep -A 2 ‘^core id ‘ /prp/cpuinfo

-B(后面加数字):找到行显示前面的n行

grep -B 2 ‘^core id ‘ /prp/cpuinfo

-C(后面加数字):找到行的前后n行

grep -C 2 ‘^core id ‘ /prp/cpuinfo

三、简单介绍

组成部分:一般字符:没有特殊意义的字符

特殊字符:也称meta字符,元字符,在正则表达式中有特殊的意义

常见的元字符:

\ :通常用于打开或者关闭后续字符的特殊含义,如\(…\)与\{…\}

. :匹配任意单个字符(除NUL)

*  :   匹配前面的字符任意次

.* :任意长度的任意字符  例如:  a.*b:  以字母a开头

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

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

\? :匹配前面的字符0次或者1次

\{…\} :匹配前面的字符1次或者0次

例如:   \{0,1\}  匹配一次

grep ‘a\{2,3\}‘ aa.txt

grep ‘a.\{2,3\}‘ aa.txt

egrep:

+ : 匹配前面的正则表达式1个或者多个扩张

| :匹配|前或者后的正则表达式

( ):匹配方刮号起来的正则表达式群   ([])

位置锚定:

^ :锚定行首,此字符后面的任意内容必须出现在行首

$:锚定行尾,此字符前面的任意字符必须出现在行尾

^$:空白行

\<:其后面的任意字符必须作为单词首部出现

\>:其前面的任意字符必须作为单词的尾部出现

\<root\>

实例:    grep ‘\<root‘ aa.ttx    grep ‘root\>‘ aa.ttx   grep ‘\<root\>‘ aa.ttx

分组:\(\)

\(ab\)*   匹配ab

向后引用

\1:引用第一个左刮号以及与之对应的右刮号内的所有内容

\2:引用第二个左刮号以及与之对应的右刮号内的所有内容

\3:引用第三个左刮号以及与之对应的右刮号内的所有内容

\4:引用第四个左刮号以及与之对应的右刮号内的所有内容

实例:grep ‘\([0-9]).*\1$‘ aa.txt

四、grep\egrep\fgrep 之间的关系

grep:在没有参数的情况下,只输出符合RE字符串之句子,常见的参数在“一”中

egrep:为grep的扩充版,改良了许多传统的grep不能或者不便的操作;such as:

--- grep 之下不支持?与+这两种字符,但是egerp可以得

--- grep  不支持a|b 或则 (abc | xyz) 这类“或一”比对,但是egerp可以

--- grep 在处理{n,m}时,需要{与}处理,但egrep不需要

五、字符集

[:alnum:]  数字字符    [:digit:]  数字字符  [:punct:]  标点符合字符   [:alpha:]   字母字符

[:graph:]   非空字符    [:space:] 空格字符  [:blank:]   空格与定位字符  [:lower:]  小写字母

[:upper:]   大写字符   [:cntrl:]  控制字符   [:print:]  可显示的字符    [:xdigit:] 16进制数字

六、实例

1、 grep ‘h.\{0,4\}p$‘ a:匹配a文件中任意字符至少0次之多4次

2、 grep ‘h.\{1\}p$‘ a   :匹配a文件中任意字符1次

3、 grep ‘h.\{1,\}p$‘ a  :匹配a文件中任意字符至少1次

4、  grep -o -E‘[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}‘ grub.cfg  搜索IP地址

5、 grep  --color -E‘C|cat‘ a.txt

6、 ls  |  grep ‘[[^[:space:]]*[0-9]‘   显示以数字结尾但是不包含空白的文件。

7、关于grep和egrep

如下通过常用实例来学习BRE和ERE匹配,源文件url.txt内容如下:

www.baidu.com

http://www.baidu.com

https://www.baidu.com

http://wwwbaiducom

baidu.com

baidu

匹配以http或者https开头,并且其后为:并且含有.的串

BRE匹配:

grep ‘^https\{0,1\}.*\..*‘ url.txt

ERE匹配:

grep -E ‘^https?.*\..*‘ url.txt

匹配结果如下:

http://www.baidu.com

https://www.baidu.com

时间: 2024-08-03 23:11:16

Shell 正则表达式 基础的相关文章

shell————正则表达式基础及sed

一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,下面我们就为大家介绍三种文本处理工具/命令:grep.sed.awk,它们三者均可以解释正则. 二 grep 参数 -n  :显示行号-o  :只显示匹配的内容-q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 -l  :如果匹配成功,则只将文

shell 正则表达式基础

1 常用的命令工具 grep.egrep.vim.sed.awk 2 基本的正则表达含义 d         匹配字母d .        匹配任意单个字符 *        匹配一个或多个 .*        匹配任意多个字符 ^        匹配字符串的开头 $        匹配字符串的结尾 []        匹配集合中的任意单个字符 [^]       匹配否定,对括号中的集合取反 [x-y]      匹配x到y连续的字符串范围 \        匹配转义后的字符串 \{n,\} 

第七章 Shell正则表达式

正则表达式在每种语言中都会有,目的就是匹配符合你预期要求的字符串. 7.1 Shell正则表达式 基础正则表达式:BRE(basic regular express) 扩展正则表达式:ERE(extend regular express),扩展的表达式有+.?.|和() 符号 描述 示例 . 匹配除换行符(\n)之外的任意单个字符 匹配123: echo -e "123\n456" |grep -E '1.3' ^ 匹配字符串开头 匹配以abc开头的行: echo -e "a

bash shell学习-正则表达式基础 (笔记)

A gentleman is open-minded and optimistic; a small person is narrow-minded and pessimistic. "君子坦荡荡,小人长戚戚" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版) 一.正则表达式基础 1.什么是正则表达式 正则表达式(Regular Expression, RE)是对字符串操作的一种逻辑公式,就是用一些事先定义好的特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

shell脚本基础学习(转)

看到别人的学习总结,觉得不错转了过来(转自TryFly) 一.shell脚本基础 ? ?shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正则表达式,管道命令以及重定向向等功能,以达到我们所想要的处理目的.它的基本用途有: 1.自动化常用命令 2.执行系统管理和故障排除 3.创建简单的应用程序 4.处理文本或文件 ... 二.创建shell脚本 第一步.使用文本编辑器来创建文本文件 第一行必须包括shell 声明序列:#!

Linux shell入门基础(六)

六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行的角色是不一样的: #shell scripts(UNIX Like系统的原则有一条:程序越短越好) #bash csh tcsh ksh #which startx(查看文件的路径) /usr/X11R6/bin/startx #vi `which startx` #!/bin/sh …… #vi

续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,

一. Vim续写 ?1.命令扩展模式的位置定界 ??起始位置 cmd 终止位置???Cmd:????y复制????d删除????Gu变大写????gu变小写??例如:0y$命令意味着:????0 先到行头????Y 从这里开始拷贝????$ 拷贝到本行行尾最后一个字符????Ye 从当前位置拷贝到本单词的最后一个字符 ?2.扩展命令模式:地址定界 ? ?# 具体第#行,? ?#1,#2 从开头数第#1行到第#2行? ?#1,+#2 从开头数的第#1行到从第#1行开始数的第#2行? ? ?例:2,

第七章,shell编程基础

更多笔记点击查看 Linux学习从入门到打死也不放弃,完全笔记整理(持续更新) http://blog.51cto.com/13683480/2095439 笔记整理开始时间:2018年4月12日11:37:35 本章内容: 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 编程基础: 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤 一步一步实现,使用的时候一个一个依次调用就可以了 对象式:以数据为中