Linux:基础命令讲解实例——grep正则表达式的使用

在Linux里面有处理文本的三剑客,现在我们先了解grep正则表达式的使用,正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串。如:vi,grep,awk,sed等都支持正则表达式,正则表达式有基本正则表达式和扩展正则表达式,grep默认就是基本表达式。

基本正则表达式: 默认匹配次数:贪婪模式,尽可能多的去匹配。

扩展正则表达式:基于基本正则表达式多加了一些功能,基本一样。

grep命令参数

grep 【参数】 搜索文件

参数:

--color=auto:对匹配到的串做高亮显示

-v:显示模式匹配不到行

-i:忽略字符大小写;

-o:仅显示能够被模式匹配到的串本行

-q: 静默模式

-E:使用扩展的正则表达式

-n: 顺便输出行号

基本正则表达式的元字符

字符匹配:

.: 匹配任意单个字符;

[]:匹配指定范围内的任意单个字符;

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

次数匹配:用于要指定其次数的字符的后面;

*: 任意次;

\?:0或1次;

\+:1或多次;

\{m\}:精确限制为m次;

\{m,n\}: 至少m次,至多n次,[m,n]

\{0,n\}:至多n次;

\{m,\}:至少m次;

.*: 匹配任意长度的任意字符;

位置锚定:

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

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

\<,\b: 词首锚定;用于表示单词的模式的左侧;

\>, \b:词尾锚定;用于表示单词的模式的右侧;

^$: 空白行;

分组:\(\)

分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量中;这些变量分别是\1, \2, ...

\1: 从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容;

后向引用:使用变量引用前面的分组括号中的模式所匹配到的字符;

实例1:显示文件中以bash结尾的行

实例2:显示文件中的两位数或三位数

实例3:显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行

实例4:找出文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

egrep命令

egrep执行效果与"grep-E"相似,使用的语法及参数可参照grep指令,与grep得不同点在于解读字符串的方法。

egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范。

扩展正则表达式的元字符

字符匹配:

.: 任意单个字符

[]:

[^]:

次数匹配:

*

?: 0次或1次;

+: 1次以上;

{m}: 精确匹配m次;

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

锚定:

^: 锚定行首

$: 锚定行尾

\\<, \\b

\\>, \\b

分组:()

实例1:使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名

实例2:找出ifconfig命令执行结果中1-255之间的数字

总结

grep 命令一次只能搜索一个指定的模式而egrep 命令检索扩展的正则表达式(包括表达 式组和可选项)二者之间并无差别,只是一个是扩展搜索,一个是基本搜索。

原创文章,作者:lkw_zzy,如若转载,请注明出处:https://www.localmtjobs.com/135.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注