Linux基础入门--实验13(正则表达式基础)

正则表达式和通配符区别

# 若为通配符,*表示任意长度字符串,可匹配shixx/shiyan等
# 若为正则表达式,*表示前面字符i出现任意次,可匹配sh/shii/shi等
shi*

正则表达式常用语法

|:竖直分隔符表示选择,例如"boy|girl"可以匹配"boy"或者"girl"
+:表示前面的字符必须出现至少一次(1 次或多次),例如,"goo+gle",可以匹配"gooogle","goooogle"等;
?:表示前面的字符最多出现一次(0 次或 1 次),例如,"colou?r",可以匹配"color"或者"colour";
*:星号代表前面的字符可以不出现,也可以出现一次或者多次(0 次、或 1 次、或多次),例如,“0*42”可以匹配 42、042、0042、00042 等。
():是否将括号内的模式串作为一个整体。例如,"gr(a|e)y"等价于"gray|grey""(grand)?father"匹配 father 和 grandfather。
\	相当于多种编程语言中都有的“转义字符”的概念。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。
^	匹配输入字符串的开始位置。
$	匹配输入字符串的结束位置。
{n}	n 是一个非负整数。匹配确定的 n 次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个 o。
{n,}	n 是一个非负整数。至少匹配 n 次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有 o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m}	m 和 n 均为非负整数,其中 n<=m。最少匹配 n 次且最多匹配 m 次。例如,“o{1,3}”将匹配“fooooood”中的前三个 o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
*	匹配前面的子表达式零次或多次。例如,zo*能匹配“z”、“zo”以及“zoo”。*等价于{0,}。
+	匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
?	匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。
?	当该字符紧跟在任何一个其他限制符(*,+,?,{n}{n,}{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。
.	匹配除“\n”和"\r"之外的任何单个字符。要匹配包括“\n”和"\r"在内的任何字符,请使用像“[\s\S]”的模式。
\s 匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S 匹配任何可见字符。等价于[^ \f\n\r\t\v]。
x | y	匹配 x 或 y。例如,“z | food”能匹配“z”或“food”。“(z | f)ood”则匹配“zood”或“food”。
[xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”任一字符。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z] 排除型的字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。

Linux基础入门--实验13(正则表达式基础)_第1张图片

grep

grep命令用于打印输出文本中匹配的模式串,它使用正则表达式作为模式匹配的条件。grep支持三种正则表达式引擎,分别用三个参数指定:
Linux基础入门--实验13(正则表达式基础)_第2张图片
grep常用参数:
-b 将二进制文件作为文本来进行匹配
-c 统计以模式匹配的数目
-i 忽略大小写
-n 显示匹配文本所在行的行号
-v 反选,输出不匹配行的内容
-r 递归匹配查找
-A n n 为正整数,表示 after 的意思,除了列出匹配行之外,还列出后面的 n 行
-B n n 为正整数,表示 before 的意思,除了列出匹配行之外,还列出前面的 n 行
–color=auto 将输出中的匹配项设置为自动颜色显示
Linux基础入门--实验13(正则表达式基础)_第3张图片
使用基本正则表达式,BRE:
Linux基础入门--实验13(正则表达式基础)_第4张图片
使用扩展正则表达式,ERE:
Linux基础入门--实验13(正则表达式基础)_第5张图片
鉴于本文仅仅是入门,就不再学习set和awk了。

参考资料

[1] 实验楼《Linux基础入门(新版)》
[2] 《鸟哥的Linux私房菜》
[3] 百度百科:正则表达式

你可能感兴趣的:(操作系统基础篇)