linux grep与正则表达式使用介绍

来源:脚本之家  责任编辑:小易  

可以使用 perl 正则表达式 grep -P "\b(?!([0-9]{4}|[a-z]{4}))[0-9a-z]{4}\b"

grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。Windows系统下类似命令FINDSTR。

a=$( expr 'helloworld20140501.txt' : '.*\([0-9]\{8\}\).*' ) echo $a linux shell 中可以将命令的结果赋值给变量,$(命令)这种格式将返回命令执行后的结果字符串 上面命令执行后,变量a的值是20140501 a=`echo 'helloworld20140501.txt'|sed

grep egrep fgrep(不支持正则表达式)

1. grep简介 grep (global search regular expression_r(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep

grep需要标准输入 因此常常位于管道右侧

一.linux文本查找命令在说linux正规表达式之前,还介绍下linux中查找文本文件常用的三个命令:1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本。2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本

命令参数:

其实你写的方法是对的,就是需要注意一个问题,就是文件的格式 如果是linux文件的格式,你的写法没有任何问题。 但是如果是windows的话就错了。。你试试

--color=auto: 对匹配到的文本着色显示

上海杜继业律师回复如下:一、以一则生活案例来解析这个问题车主A买了一辆新车,投保了交强险、车损险、商业三者险、盗抢险和不计免赔特约险。一次去商场,将车停在收费停车场中,购物回来后,发现自己的爱车不翼而飞。那么,车主应向谁索赔?保险公司,还是停车场?二、法律意见车主遭受的损失,是由于停车场的管理不善造成的,因此根据保管合同,车主可以直接向停车场索赔。但是,由于向停车场索赔的程序可能比较复杂,车主也可以根据自己的保险合同向自己的保险公司先行索赔,待保险公司支付赔偿后,将自己向停车场追偿的权利转让给保险公司,由保险公司再向停车场进行追偿。另外,对于停车场来说,也可以利用保险分担自己的损失:一般正规的

-v: 显示不被pattern匹配到的行

首先,因为高温下进入空调房,温差过大,血管会急剧收缩,极易导致感冒。所以,室内外温差最好不要超过6摄氏度,空调最适当的温度应该调节在28摄氏度。其次,空调下人体失水过多。在空调间里人们会觉得干渴,其实这时人体已经严重缺水了,所以在空调间里,补水是必不可少的。下面给您几个空调间太干燥的建议:一、加湿器这是最容易想到的解决方法,而且简单有效。不过使用加湿器要注意:1.加湿器使用纯净水或矿泉水,不要用自来水,长久用自来水容易得肺病;2.一星期清洁一次,不然容易滋生细菌;3.开空调开加湿器的同时最好开启房间门窗,不然人体容易缺氧;二、用湿拖把拖地这是最科学实用的解决方法开空调前,抹湿地板,用湿拖把将整

-i: 忽略字符大小写

作为一档选秀类节目,好声音无疑是成功的,否则也不会连续推出五届,但第五届因版权问题改为新歌声,但是仍然收视不俗!尽管第五届现在的冠军还没有眉目,但是对前四届冠军来说,那英可谓是铁打的营盘,流水的兵,其他导师,都有换过了,唯有那英一直坚守阵地,并且四届好声音,三夺总冠军!按理说,如果收视率火爆的节目,理应每次冠军都是最火的!不管说成为一线明星,但是至少应该经常霸占各大头条吧!但是,这些学员都没有达到大家心目中的那种火热程度!第一届中国好声音,大家呼声最高的是吉克隽逸,但是最终那英鬼使神差带领梁博以《我爱你中国》!但是让那英郁闷的是自己所带的冠军没火,而以怪出名的丑得吓哭小孩的吴莫愁却火到爆表!不

-n:显示匹配的行号

作者:trimaximus链接:https://www.zhihu.com/question/22163180/answer/137061422来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。插播一条重要广告:以下分两类列举一些品牌对应的单品,单品均为APP上之前收集的打折的B2C平台值得买商品(占总量几百分之一除了4点重要筛选条件::商场品牌吊牌价格真正1~5折!(部分价格保护或者特别值得买的单品、品牌除外)另外,99%商品只选自天猫旗舰店和网易考拉京东亚马逊等B2C平台,为保障品质。欢迎下载APP浏览全部商品哈:应用详情,(刚做出不久,有任何建议意见欢迎赐教)

-c: 统计匹配的行数

-o: 仅显示匹配到的字符串

-q: 静默模式,不输出任何信息

-A #: after, 后#行

-B #: before, 前#行

-C #:context, 前后各#行

-e:实现多个选项间的逻辑or关系

grep –e ‘cat ' -e ‘dog' file

-w:匹配整个单词 数字加字母下划线全都算单词的一部分,其他的都是单词的分隔符

-E:相当于egrep

-F:相当于fgrep,不支持正则表达式

-f: 跟一个文件(写有不同字符)进行内容检索是逻辑or关系

练习题:

1、显示三个用户root、centos、arch的UID和默认shell (用户需要自己创建)

grep与正则表达式

2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一 个小括号的行

grep与正则表达式

3、使用egrep取出/etc/rc.d/init.d/functions中其基名

grep与正则表达式

4、使用egrep取出上面路径的目录名

grep与正则表达式

5、统计last命令中以root登录的每个主机IP地址登录次数

grep与正则表达式

6、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255

0-9: [0-9]

10-99: [1-9][0-9]

100-199: 1[0-9][0-9]

200-249: 2[0-5][0-9]

250-255: 25[0-5]

7、显示ifconfig命令结果中所有IPv4地址

grep与正则表达式

8、将此字符串:welcome to centos linux 中的每个字符排序,重复 次数多的排到前面

grep与正则表达式

正则表达式:

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符) 不表示字符字面意义,而表示控制或通配的功能

程序支持:grep,sed,awk,vim, less,nginx,varnish等

分两类:

基本正则表达式:BRE

扩展正则表达式:ERE

grep -E, egrep

正则表达式引擎:

采用不同算法,检查处理正则表达式的软件模块

PCRE(Perl Compatible Regular Expressions)

元字符分类:字符匹配、匹配次数、位置锚定、分组

man 7 regex

字符匹配:

. 匹配任意单个字符 默认是贪婪匹配

[] 匹配指定范围内的任意单个字符 .在里面也是点不需要转义

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

[:alnum:] 字母和数字

[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z

[:lower:] 小写字母

[:upper:] 大写字母

[:blank:] 空白字符(空格和制表符)

[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)

[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)

[:digit:] 十进制数字

[:xdigit:]十六进制数字

[:graph:] 可打印的非空白字符

[:print:] 可打印字符

[:punct:] 标点符号

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

* 匹配前面的字符任意次,包括0次

贪婪模式:尽可能的匹配符合条件的字符

.* 任意长度的任意字符

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

\+ 匹配其前面的字符至少1次

\{n\} 匹配前面的字符n次

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

\{,n\} 匹配前面的字符至多n次

\{n,\} 匹配前面的字符至少n

位置锚定:定位出现的位置

^ 行首锚定,用于模式的最左侧

$ 行尾锚定,用于模式的最右侧

^PATTERN$ 用于模式匹配整行

^$ 空行

^[[:space:]]*$ 空白行

\< 或 \b 词首锚定,用于单词模式的左侧

\> 或 \b 词尾锚定;用于单词模式的右侧

\<PATTERN\> 匹配整个单词

分组:\(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如: \(root\)\+

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,

这些变量的命名方式为: \1, \2, \3, ...

\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

示例: \(string1\+\(string2\)*\)

\1 :string1\+\(string2\)*

\2 :string2

后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身

或者:\|

示例:a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat

扩展的正则表达式:

egrep = grep -E

egrep [OPTIONS] PATTERN [FILE...]

扩展正则表达式的元字符:

字符匹配:

. 任意单个字符

[] 指定范围的字符

[^] 不在指定范围的字符

次数匹配:

*:匹配前面字符任意次

?: 0或1次

+:1次或多次

{m}:匹配m次

{m,n}:至少m,至多n次

位置锚定:

^ :行首

$ :行尾

\<, \b :语首

\>, \b :语尾

分组:

() 后向引用:\1, \2, ...

或者:

a|b: a或b C|cat: C或cat (C|c)at:Cat或cat

练习题:

1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)

grep与正则表达式

2、显示/etc/passwd文件中不以/bin/bash结尾的行

grep与正则表达式

3、显示用户rpc默认的shell程序

grep与正则表达式

4、找出/etc/passwd中的两位或三位数 (只要数字的话可以加-o选项仅仅显示数字)

grep与正则表达式

5、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非 空白字符的行

grep与正则表达式

6、找出“netstat -tan”命令结果中以LISTEN后跟任意多个空白字符结尾的行

grep与正则表达式

7、显示CentOS7上所有系统用户的用户名和UID

grep与正则表达式

8、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找 出/etc/passwd用户名和shell同名的行

grep与正则表达式

9、利用df和grep,取出磁盘各分区利用率,并从大到小排序

grep与正则表达式

grep和正则表达式参数

一:grep参数

1,-n  :显示行号

2,-o  :只显示匹配的内容

3,-q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

4,-l  :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc 

,

5,-A  :如果匹配成功,则将匹配行及其后n行一起打印出来

6,-B  :如果匹配成功,则将匹配行及其前n行一起打印出来

7,-C  :如果匹配成功,则将匹配行及其前后n行一起打印出来

8,-c  :如果匹配成功,则将匹配到的行数打印出来

9,-E  :等于egrep,扩展

10,-i  :忽略大小写

11,-v  :取反,不匹配

12,-w:匹配单词

二:正则介绍

首先建a.txt。在进行验证

1,^ 行首

2,$行尾

3,.除了换行符以外的任意单个字符

4,*前导字符的零个或多个

5, .*所有字

6, []字符组内的任一字符

7,[^]对字符组内的每个字符取反(不匹配字符组内的每个字符)

8,  ^[^]非字符组内的字符开头的行

9,[a-z] 小写字母

10,[A-Z] 大写字母

11,[a-Z] 小写和大写字母

12,[0-9] 数字

13,\<单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词

\>单词尾

以上就是linux grep与正则表达式使用介绍的详细内容,更多关于grep和正则表达式参数的资料请关注脚本之家其它相关文章!

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

linux grep正则表达式怎么用

linux grep命令 命令本来是ed行编辑器中的一个php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">命令/过滤器: g/re/p -- global - regular expression - print. 基本格式 grep pattern [file...] (1)grep 搜索字符串 [filename] ...

在linux系统如何grep过滤中,不包含某些字符

1、linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2、格式

grep[options]

3、主要参数

[options]主要参数:

-c:只输出匹配行的计数。

-I:不区分大小写(只适用于单字符)。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

pattern正则表达式主要参数:

\:忽略正则表达式中特殊字符的原有含义。

^:匹配正则表达式的开始行。

$: 匹配正则表达式的结束行。

\<:从匹配正则表达式的行开始。

\>:到匹配正则表达式的行结束。

[ ]:单个字符,如[A]即A符合要求。

[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。

。:所有的单个字符。

* :有字符,长度可以为0。

4、grep命令使用简单实例:

$ grep ‘test’d*

显示所有以d开头的文件中包含test的行。

$ grep ‘test’aa bb cc

显示在aa,bb,cc文件中匹配test的行。

$ grep‘[a-z]\{5\}’ aa

显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

linux的grep命令,解释一下perl正则表达式在这里怎么用,以及语法

grep -P 'Regular expressions'

其中

-P 告诉grep使其支持perl正则表达式

'Regular expressions' 此处就是perl正则表达式

具体的语法跟perl中的一模一样

Linux Shell正则表达式如何匹配1~3位数字

grep '^[0-9]\{1,3\}$' test.txt | grep '^[1-9]'

如果是变量

echo $var | grep '^[0-9]\{1,3\}$' | grep '^[1-9]'

$表示行尾

这个正则不匹配 12a 这样的字符串

你的变量内容是什么样的?

我用来测试的 test.txt 的内容:

123

321

123212

001

010

100

10000

0011

10101

1101

1

2

3

11

22

33

1a

2a

请简述基础正则表达式grep高级参数的使用

常用参数:

-v排除匹配内容,

-e支持扩展的正则表达式,

-i忽略大小写,

-o输出匹配的内容(只是一块,不是行),

--color=auto 匹配内容显示颜色,

-n 在行首显示行号。

特殊字符注意事项:

^(尖括号)word :表示搜索以word开头的内容。

word$ 表示搜索以word结尾的内容。

^$ 表示的是空行,不是空格。

. 代表且只能代表任意一个字符。非正则表达式其他功能(当前目录,加载文件)

\ 转义字符,让有着特殊身份意义的字符,脱掉马甲,还原原型。例如\.只表示原始小数点意义。

* 表示重复0个或多个前面的一个字符。不代表所有。

.* 表示匹配所有的字符。^.*表示以任意字符开头。

[任意字符如abc] 匹配字符集内任意一个字符[a-z]。

[^abc] ^在中括号里面是非的意思,不包含之意。意思就是不包含a或b或c的行。

{n,m} 表示重复n到m次前一个字符。{n}至少n次,多了不限。{n}N次,{,m}至多m次,少了不限。

注:使用grep或sed要对{}转义。即\{\}.egrep就不需要转义了。

如果有什么不懂的话可以去看看《Linux就该这么学》这本书,非常适合新手学习Linux。

  • 本文相关:
  • shell脚本之正则表达式、grep、sed、awk
  • 正则表达式grep用法详解
  • linux系统用户管理与grep正则表达式示例教程
  • 浅谈linux grep与正则表达式
  • bash 中用于grep的正则表达式
  • linux grep正则表达式与grep用法详解
  • shell正则表达式之grep、sed、awk实操笔记
  • grep用法详解 grep与正则表达式
  • 详解正则表达式 \v 元字符
  • 正则表达式m修饰符(多行匹配)
  • 比较不错的c#中的常用的正则表达式
  • javascript中正则表达式的概念与应用
  • js处理网页编辑器转义、去除转义、去除html标签的正则
  • javascript 基于正则表达式的文本框验证代码
  • 正则表达式字面量在ecmascript5中的变化
  • 解决preg_match匹配过多字符长度的限制的思路分析
  • 正则 捕获组(capture group)
  • java正则表达式使用
  • linux grep正则表达式怎么用
  • 在linux系统如何grep过滤中,不包含某些字符
  • linux的grep命令,解释一下perl正则表达式在这里怎...
  • Linux Shell正则表达式如何匹配1~3位数字
  • 请简述基础正则表达式grep高级参数的使用
  • shell grep命令的多个正则表达式 组合使用。
  • shell编程怎么抽取匹配正则表达式的字符串?
  • linux里grep和egrep,fgrep的区别
  • linux 正则表达式怎么匹配
  • shell grep中的正则表达式如何匹配星号
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved