linux检查正则表达式,正则表达式及Linux文本检查工具
2)匹配次数
用法:用在指定重复出现字符的后面
功能:限制前面的支付要出现的次数
*:表示匹配其前面的字符任意次(0或1或多次)【Jasonforcto注:这里要区分开通配符的定义】
案例: a,b,ab,aab,acb,adb,amnb
因此对于以上的案例中"a*b"只能匹配(b,ab,aab,)
详解:对于a*b表示的是a是一个需要重复的字符,而*表示重复的次数,b表示的是a后面的字符
因此:当*等于0时,匹配的是b
当*等于1时,匹配的是ab
当*等于2时,匹配的是aab
这里一定要注意*表示的是任意次,而不是任意字符
[root@linux ~]# grep '.*' test.txt
This is a beautiful girl
So do you want to know who is her?
oh! I can`t tell you?
can you tell me your phone number?
My telphone number is 15648562351...
Beat wish to you ?
在看看下面一个,要注意这两个的结合
[root@linux ~]# grep '.' test.txt
This is a beautiful girl
So do you want to know who is her?
oh! I can`t tell you?
can you tell me your phone number?
My telphone number is 15648562351...
Beat wish to you ?
或者看看下面的理解了吗?
[root@linux ~]# grep -v '.' test.txt
[root@linux ~]#
.*:表示的是任意长度的任意字符(此处的*是重复.的次数)
[root@linux ~]# grep '.*' test.txt
This is a beautiful girl
So do you want to know who is her?
oh! I can`t tell you?
can you tell me your phone number?
My telphone number is 15648562351...
Beat wish to you ?
案例:t.*e表示的是t开头,e结尾"."可以是任意字符"*"表示.可以出现多次
[root@linux ~]# grep 't.*e' test.txt
So do you want to know who is her?
oh! I can`t tell you?
can you tell me your phone number?
My telphone number is 15648562351...
这个命令把所有符合的条件都显示了出来,为什么是一行呢?这里大家注意一下,Linux系统中正则表达式默认的处于贪婪模式,就是尽可能的把所有匹配到的行都显示出来。可是如何关闭贪婪模式呢?下面一个我们就讲到了j_0057.gif
注意: 默认工作处于贪婪模式
贪婪 与 非贪婪(惰性) 两者的前提都是需要匹配成功,区别在于:
贪婪 是在匹配成功的前提下,尽可能多的去匹配
非贪婪(惰性)是在匹配成功的前提下,尽可能少的去匹配
?:表示匹配其前面的字符可有可无(1次或0次)
[root@linux ~]# grep 'a\?b' test002.txt
b
ab
acb
aab
ahjhb
ababababab
[root@linux ~]#
#注意在grep中需要给特殊字符转义比如"{},?,<>"以下就不多说明了\{m,n\}:匹配其前面的字符至少m次,至多n次
[root@linux ~]# grep 'a\{1,3\}b' test002.txt
ab
aab
ababababab
[root@linux ~]#\{1,\}:表示匹配至少一次
[root@linux ~]# grep 'a\{1,\}b' test002.txt
ab
aab
ababababab
[root@linux ~]#\{0,2\}:表示最多匹配2次
[root@linux ~]# grep 'a\{0,2\}b' test002.txt
b
ab
acb
aab
ahjhb
ababababab
[root@linux ~]#3)位置锚定
说明:限制使用模式搜索文本,限制模式所匹配到的文本只能出现于目标文本的个位置;
字符
描述
^
行首锚定;用于模式的最左侧,^PATTERN
$
行尾锚定;用于模式的最右侧,PATTERN$
^PATTERN$
要让PATTERN完全匹配一整行
^$
没有任何字符包括空格的行
^[[:space:]]*$
没有任何字符但是包括空格的行
^:
[root@linux ~]# grep '^r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
##如果不加上首字符,其他的行内包含的r..t也会显示出来的
[root@linux ~]# grep 'r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin$:
[root@linux ~]# grep 't$' /etc/passwd
halt:x:7:0:halt:/sbin:/sbin/halt
[root@linux ~]#^$:
[root@linux ~]# grep -n '^$' test002.txt
8:
[root@linux ~]#
单词:由非特殊字符组成的连续字符(字符串)都称为单词;
\
###第一个例子
[root@linux ~]# grep "\
this is super
this is a super
this is a big super
[root@linux ~]#
##########################################
[root@linux ~]# grep "super\>" test003.txt
this is super
this is a super
this is a big super
super is me
he super is hei
[root@linux ~]####第二个例子
[root@linux ~]# grep "\" /etc/passwd
games:x:12:100:games:/usr/games:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
colord:x:996:994:User for colord:/var/lib/colord:/sbin/nologin
libstoragemgmt:x:995:992:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
chrony:x:993:990::/var/lib/chrony:/sbin/nologin
geoclue:x:992:989:User for geoclue:/var/lib/geoclue:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
Jason:x:1000:1000::/home/Jason:/bin/bash
[root@linux ~]#
\>或\b:词尾锚定,用于单词模式的右侧,格式为PATTERN\>, PATTERN\b
[root@linux ~]# fdisk -l | grep "/dev/[sh]d[a-z]\>"
Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectors
[root@linux ~]#[root@linux ~]# grep "super\>" test003.txt
this is super
this is a super
this is a big super
super is me
he super is hei
[root@linux ~]#\:单词锚定;
[root@linux ~]# grep "\(is\)*" test003.txt
this is super
this is a super
this is a big super
super is me
he super is hei
[root@linux ~]#2)扩展正则表达式
1) 字符匹配的命令和用法与基本正则表达式的用法相同,这里不再重复阐述。
2) 次数匹配:
* :匹配其前面字符的任意次
[root@linux ~]# cat muli.txt
good god goood food foolish gooooooooooogle
[root@linux ~]# egrep 'o*' muli.txt
good god goood food foolish gooooooooooogle
[root@linux ~]#.* :表示匹配任意字符
[root@linux ~]# cat muli.txt
good god goood food foolish gooooooooooogle
[root@linux ~]# egrep 'l.*' muli.txt
good god goood food foolish gooooooooooogle
[root@linux ~]#?:匹配其前面字符的0次或着1次
[root@linux ~]# egrep 'hi?' test003.txt
this is super
this is a super
this is a big super
he super is hei+ :匹配其前面字符至少1次
[root@linux ~]# egrep 'hi+' test003.txt
this is super
this is a super
this is a big super{m,n} :匹配其前面字符m到n次
[root@linux ~]# egrep 'hi{1,2}' test003.txt
this is super
this is a super
this is a big super 3) 位置锚定的用法和基本正则表达式的用法相同,在此不再阐述。
分组及引用:
(pattern):分组,括号中的模式匹配到的字符会被记录于正则表达式引擎内部的变量中;
后向引用:\1, \2, ...
[root@linux ~]# grep 'l..e.*l..e' test004.txt
he like his liker
he love his lover
he like his likes
he love his lovers[root@linux ~]# grep '\(l..e\).*\1' test004.txt
he like his liker
he love his lover
he like his likes
he love his lovers或者:
a|b:a或者b
[root@linux ~]# egrep 'C|is' test3.txt
Cat is not cat!
[root@linux ~]# C|cat:表示C或cat
[root@linux ~]# cat test3.txt
Cat is not cat!
[root@linux ~]# egrep 'C|cat' test3.txt
Cat is not cat!
[root@linux ~]#(C|c)at:表示Cat或cat
[root@linux ~]# cat test3.txt
Cat is not cat!
[root@linux ~]# egrep '(C|c)at' test3.txt
Cat is not cat!
[root@linux ~]#
linux检查正则表达式,正则表达式及Linux文本检查工具相关推荐
- Linux 命令之 grep -- 强大的文本搜索工具/正则表达式搜索
文章目录 一.命令介绍 二.grep 的三种形式 三.常用选项 四.正则表达式 五.参考示例 在指定的文件中查找指定的关键词 查看指定文件中含有特定关键词的文本行 查看指定文件中所有包含数字的行 在指 ...
- php、linux、javascript 正则表达式
PHP 正则表达式中包含三种元素分别为:量词.元字符.修饰符 量词 语法 描述 匹配任何至少包含一个前导字符串 匹配任何包含零个或多个前导字符串 ? 匹配任何包含零个或一个前导字符串 . 匹配任意字符 ...
- Linux命令查fpga信息,linux grep命令
6 R& L j' j Tlinux grep命令 : k5 b+ a! l' [/ u7 Y9 z1.作用 , \( n' o4 s; D# h0 O4 Q( \4 ]0 eLinux系 ...
- linux文本处理工具之grep与正则表达式语法
Grep 介绍 Linux 文本处理三剑客之一,文件过滤工具(另外两剑客为sed:文本编辑工具,awk:文本报告生成器) 拥有着,根据用户指定的"模式"对目标文本逐行进行匹配检查: ...
- Linux文本处理工具和正则表达式
成功不易,加倍努力! 1 文本编辑工具之神VIM 1.1命令或普通(Normal)模式的基本命令 1.2 插入(Insert)或编辑模式的基本命令 1.3 扩展命令模式基本命令 1.4 vim的寄存器 ...
- Linux学习命令汇总三——Linux用户组管理,文件权限管理,文本搜索命令grep及正则表达式...
本章Blog相关Linux知识点 解析:在数据库按搜索码查找相对应的条目,并找与之对应额外的其他数据库的过程:名称解析:UID ,组名解析:GID 数据库:文本文件,sql数据库,ldap数据库,用户 ...
- linux隔行打印文本,详解正则表达式及Linux三大文本处理工具
grep.sed和awk都是文本处理工具,虽然都是文本处理工具但却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了. 一.正则表达式 1.匹配字符的类型 [ ...
- Linux正则表达式和文本处理工具(gred、awk、sed)
使用Linux 的 gred.awk.sed 可以方便得处理文本,然而若要灵活使用这三个工具,首先必须理解正则表达式.这里先对正则表达式进行学习,做点记录,之后再练习一下文本处理工具的使用. 正则表达 ...
- linux正则表达式与文本处理工具
目录 一.基础正则表达式 二.文本处理工具 (1)grep命令 (2)cut.sort.uniq.tr cut !列截取工具 ! sort排序工具 uniq去重工具 tr修改工具 一.基础正则表达 ...
最新文章
- 被拒稿、被否定:读博五年间都没有发 paper 是一种怎样的体验?
- 实时人脸关键点源码推荐
- Ant Design Pro开发后台管理系统(新增页面)
- exchange无法收发邮件_SpringBoot2.x系列教程69--SpringBoot中整合邮件发送
- DDL DML DCL
- splunk 提取字段_全面的Splunk应用日志分析介绍
- linux dup跨进程使用,linuxC多进程通讯---无名管道dup
- IE6和其他浏览器的css样式不同
- 小程序-picker之key-value形式
- Java自增原子性问题(测试Volatile、AtomicInteger)
- 前端响应式のmedia文件分离
- 寻找两个有序数组最小相同元素---JavaScript--解决方法
- android手机管理器在哪里打开,小米手机任务管理器在哪?怎么打开?
- 华为MatePad Pro和华为MatePad区别
- 22考研|英语词汇该如何记忆?
- 实施工程师主要工作职则
- Linux下的回收站trash
- 小孩手工_儿童折纸大全_近150篇儿童手工折纸图解教程,小孩折纸必备 - 聚巧网...
- 软件测试周刊(第58期):春光不必趁早,冬霜不会迟到。相聚离开,全部刚刚好。
- SAP 安装SAPlink
热门文章
- 引用(Reference)
- vue点击定位到指定位置_百度地图vue-baidu-map自动定位,鼠标选点并进行逆解析,地区检索,使用案列以及解决方案...
- 华为鸿蒙新概念机,华为P50概念机确认,麒麟芯片+鸿蒙系统,这才是真旗舰!...
- JAVA基础8-封装(2)
- tf.keras.layers.Conv1D 一维卷积 示例
- ngrok 内网穿透
- 【JVM】StackOverflowError与OutOfMemoryError
- 数学知识-- 信赖域(Trust Region)算法是怎么一回事
- Nvidia TX2 安装中文输入法
- php elasticsearch ik,elasticsearch 中文分词(elasticsearch-analysis-ik)安装