linux中的正则表达式

linux中的正则表达式正则表达式特殊符号一些特殊符号的表示 alnum 代表英文大小写字母及数字 alpha 代表英文大小写字母 blank 代表空格和 tab 键 cntrl 键盘上的控制按键 如 CR LF TAB DEL digit 代表数字 graph 代表空白字符以外的其他 lower 小写字母 print 可以被打印出来的任何字符 punct

[:alnum:]代表英文大小写字母及数字
[:alpha:]代表英文大小写字母
[:blank:]代表空格和 tab 键
[:cntrl:]键盘上的控制按键,如 CR,LF,TAB,DEL
[:digit:]代表数字
[:graph:]代表空白字符以外的其他
[:lower:]小写字母
[:print:]可以被打印出来的任何字符
[:punct:]代表标点符号
[:upper:]代表大写字符
[:space:]任何会产生空白的字符如空格,tab,CR 等
[:xdigit:]代表16进制的数字类型
grep查找
grep命令可以使用正则表达式搜索文本,并把匹配的行打印出来,其常用方法如下:

grep [-acinv] [–color=auto] ‘搜寻字符串’ filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 ‘搜寻字符串’ 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!
–color=auto :可以将找到的关键词部分加上颜色的显示

case1

查找特定的字符串

grep -n ‘the’ regular_express.txt # 查找’the’ 字符串
1
case2

字符组匹配,[]中包含的任意一个字符,只能是一个,字符组支持”-“连字符来表示一个范围,[^ …] 是排除型字符组,用来排除后面的字符

[abc] :表示“a”或“b”或“c”
[0-9] :表示 0~9 中任意一个数字,等价于[0]
[\u4e00-\u9fa5] :表示任意一个汉字
[^a1<] :表示除“a”、“1”、“<”外的其它任意一个字符
[^a-z] :表示除小写字母外的任意一个字符

grep -n ‘t[ae]st’ regular_express.txt # 查找“tast”或者“test”两个字符串
grep -n ‘[^#]’ regular_express.txt #查找不包含“#”的字符串
grep -n ‘[^g]oog’ regular_express.txt # 查找”oog”,但是不查找”goog”
grep -n ‘[^go]oog’regular_express.txt# 查找”oog”,但是不查找”goog”和”ooog”
grep -n ‘[[:lower:]]’ regular_express.txt # 查找小写字母

case3

行首符^,行尾符$,具体应用如下

grep -n ‘^the’ regular_express.txt # 查找行首为”the”的所有行
grep -n ‘^[A-Z]’ regular_express.txt # 查找行首为大写字母的所有行
grep -n ‘[^A-Z]’ regular_express.txt # 查找除了大写字母以外的所有字符,注意和上面区分
grep -n ‘d’ regular_express.txt # 查找以”d”结尾的所有行  
grep -n ‘^
’ regular_express.txt # 查找以”d”结尾的所有行  grep -n ‘^
’ regular_express.txt # 查找空行

case4

grep的反向选择和管道线联合应用

grep -v ‘^$’ /etc/insserv.conf | grep -v ‘^#’ # 先过滤掉空白行,然后过滤掉注释行(以#开头)
1
case5

小数点”.”表示任意一个字符,星号”*”表示重复的字符

grep -n ‘a.ou.’ regular_express.txt # 查找a?ou?类型的字符

*(星号):代表重复前面0个或者多个字符。
e*: 表示具有空字符或者一个以上e字符。
ee*,表示前面的第一个e字符必须存在。第二个e则可以是0个或者多个e字符。
eee*,表示前面两个e字符必须存在。第三个e则可以是0个或者多个e字符。
ee*e :表示前面的第一个与第三个e字符必须存在。第二个e则可以是0个或者多个e字符。

case6

大括号{}可以限定一个范围区间重复的字符数,注意,必须用转义字符来表示这个大括号,即为{} ,否则出错。

小结

^word 表示带搜寻的字符串(word)在行首
word$ 表示带搜寻的字符串(word)在行尾
.(小数点) 表示1个任意字符
\ 表示转义字符,在特殊字符前加\会将特殊字符意义去除
* 表示重复0到无穷多个前一个RE(正则表达式)字符
[list] 表示搜索含有l,i,s,t任意字符的字符串
[n1-n2] 表示搜索指定的字符串范围,例如[0-9] [a-z] [A-Z]等
[^list] 表示反向字符串的范围,例如[^0-9]表示非数字字符,[^A-Z]表示非大写字符范围
{n,m} 表示找出n到m个前一个RE字符
{n,} 表示n个以上的前一个RE字符

今天的文章 linux中的正则表达式分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-06 20:30
下一篇 2025-01-06 20:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/103183.html