博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式【TLCL】
阅读量:6092 次
发布时间:2019-06-20

本文共 2063 字,大约阅读时间需要 6 分钟。

grep【global regular expression print】        print lines matching a pattern

grep [options] regex [file...]

regex 是指一个正则表达式

 

grep选项列表:

-i          忽略大小写--ignore-case

-v          invert match

-c          打印匹配的数量,而不是文本行本身--count

-l          打印包含匹配项的文件名,而不是文本行本身 --files-with-matches      

-L          相似于-l 选项,但是只是打印不包含匹配项的文件名--files-without-match

-n          打印相应的行号--line-number

-h          应用于多文件搜索,不输出文件名--no-filename

 

  •  元义字符和原字符

^ $ . [ ] { } - ? * + ( ) | \

 

注意:正如我们所见到的,当 shell 执行展开的时候,许多正则表达式元字符,也是对 shell 有特殊 含义的字符。把元字符用引号引起来至关重要, 这样可以阻止 shell 试图展开它们。 .        匹配在此位置的任意一个字符 ^        锚点,行开头 $        锚点,行结尾 [***]      字符集合,元字符被放置到中括号里面后会失去了它们的特殊含义。^表示否定,-表示范围。 注意:
  • 要包含-:可将-放在开头[-***]
  • 字典顺序和ASCII 顺序不同,[A-Z]不总是工作【查看LANG变量】

 

  • POSIX字符集

[:alnum:]          字符数字字符,在ASCII中等价于[A-Za-z0-9]

[:word:]           增加了下划线

[:alpha:]          字母字符

[:blank:]          包含空格和tab

[:cntrl:]          ASCII的控制码,0-31,127

[:digit:]          0-9

[:graph:]          可视字符,33-126

[:lower:]          小写字母

[:punct:]          标点符号字符

[:print:]          可打印字符,在[:graph:]中的所有字符,再加上空格字符。

[:space:]          在 ASCII 中, 等价于[ \t\r\n\v\f]

[:upper:]          大写字母

[:xdigit:]          表示十六进制数字的字符

 

locale命令,查看locale操作。

 

  • POSIX基本的 Vs.扩展的正则表达式

BRE:

可以识别 ^ $ . [ ] *

字符“(”,“)”,“{”,和 “}”用反斜杠转义后,被看作是元字符

ERE:

添加了 ( ) { } ? + |

在任意元字符之前加上反斜杠会导致其被看作是一个文本字符

 

 

  • egrep 【grep -E】

echo "AAA" | grep -E 'AAA|BBB|CCC'

为了把 alternation 和其它正则表达式元素结合起来,我们可以使用()来分离 alternation。

grep -Eh '^(bz|gz|zip)' dirlist*.txt

 

  • 限定符

?          匹配零个或者一个元素

eg:^\(?[0-9][0-9][0-9]\)?  [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$

通常圆括号都是元字符(在 ERE 中),所以我们在圆括号之前加上了反斜杠,使它们成为文本字符

*          匹配零个或多个元素

[[:upper:]][[:upper:][:lower:] ]*.

+          匹配一个或多个元素

^([[:alpha:]]+ ?)+$

{}          匹配特定个数的元素

{n} n次, {n,m} n到m次, {n,}大于等于n次, {,m}小于等于m次

 

  • find

find . -regex '.*[^-\_./0-9a-zA-Z].*'

 

注意:

当某一行包含的字符串匹配上了一个表达式的时候,grep 命令会打印出这一行

find 命令要求路径名精确地匹配这个正则表达式

 

  • locate查找文件

locate 程序支持基本的(--regexp 选项)和扩展的(--regex 选项)正则表达式

 

  • 在less和vim中查找文本

vim 支持基本的正则表达式

在扩展表达式中,许多被认为是元字符的字符在基本的表达式中被看作是文本字符,

只有用反斜杠把它们转义之后,它们才被看作是元字符。

转载于:https://www.cnblogs.com/songdechiu/p/9980512.html

你可能感兴趣的文章
C++ 经典开源
查看>>
LayoutParams
查看>>
Chisel_LLDB调试命令
查看>>
DNS Doctoring
查看>>
sql查漏补缺
查看>>
plugin插件
查看>>
(转载一篇)Windows7与ArcGIS Desktop9.3冲突问题解决(由QQ安装问题引出)(经本人验证已解决)...
查看>>
关于Linux C编程问题 (struct sockaddr*)&addr 强制转换
查看>>
需求规格说明书
查看>>
SSE图像算法优化系列五:超高速指数模糊算法的实现和优化(10000*10000在100ms左右实现)。...
查看>>
Event based Collections
查看>>
例题1-1
查看>>
【leetcode】901. Online Stock Span
查看>>
创建oracle本地数据库步骤详解
查看>>
线段树入门
查看>>
【Android】在某一时间段控制Button是否可点击
查看>>
页面布局
查看>>
svnrdump:E175000:SSL is not supported错误的解决
查看>>
3月23日html(四) 格式与布局
查看>>
http协议
查看>>