linux 文本搜索软件,Linux命令之文本搜索工具grep、egrep、fgrep

Linux命令之文本搜索工具grep、egrep、fgrep

grep即global search regular expression_r(RE) and print out the line,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep家族包括grep、egrep和fgrep:egrep是grep的扩展;fgrep查找一个或多个与给出的字符串或词组相匹配文件中的行,不支持规则表达式

语法:grep [OPTIONS] PATTERN [FILE...]

常用参数选项

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

-c:只输出匹配的行数

-i:不区分大小写

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

-v:显示不匹配的所有行

-E:允许使用扩展模式匹配

元字符集模式匹配,常用基本元字符有以下:

.:匹配一个字符

*:匹配任意字符

[]:匹配一个指定范围内的字符

[^]:匹配一个不在指定范围内的字符

[[:upper:]]:[A-Z]

[[:lower:]]:[a-z]

[[:digit:]]:[0-9]

[[:alnum:]]:[0-9a-zA-Z]

[[:space:]]:空格或tab键

[[:alpha:]]:[a-zA-Z]

\(..\):标记匹配字符

^:锚定行首

$:锚定行尾

\

\>:锚定词尾

x\{m\}:重复字符x,m次

x\{m,\}:重复字符x,至少m次

x\{m,n\}:重复字符x,至少m次,不多于n次

\(\):分组

后向引用

\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

\2:

\3:

示例:显示/tmp/log/目录下abc.log文件中ab字符串后面的任意单个字符或任意字符的行

f1abdee5e7846cd3542a74b631821d59.png

f6034083b996bd048ae8156bd24f036f.png

显示/tmp/log/目录下abc.log文件中ab后出现字母x的行,并且不区分大小写

2b24a333372b1e3a33655b74c7881f4f.png

显示/tmp/log/目录下abc.log文件中行首出现任意字母的行,并且不区分大小写

1eec567c6da4a187fcda8e6608e5b3fa.png

显示/etc/passwd文件中以bash结尾的行

d90248c8e98df4d0063f7223d93c1d39.png

显示/etc/passwd文件中的两位数或三位数

第一种方法

0551e8aa6e7cb919d82747e322300573.png

第二种方法:注意,图中红色边框

79b5d542668c57e2b9c4a3277cfae56b.png

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

5d1ec19e2b719d6dfec0c77ba32ac86e.png

添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行

94498bad7ebc89a33709b9fc4c58172a.png

显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)

6745318bb504dce4f7b0abe52aa9a3df.png

找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

7270b457ca9c554dc8f37155603c34c7.png

egrep命令执行效果与grep -E相似,使用的语法及参数可参照上面grep指令,与grep的不同点在于解读字符串的方法,以下元字符集合

语法:egrep [OPTIONS] PATTERN [FILE...]

常用参数选项

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

-c:只输出匹配的行数

-i:不区分大小写

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

-v:显示不匹配的所有行

-E:允许使用扩展模式匹配

常用基本元字符有以下:

.:匹配一个字符

*:匹配任意字符

[]:匹配一个指定范围内的字符

[^]:匹配一个不在指定范围内的字符

[[:upper:]]:[A-Z]

[[:lower:]]:[a-z]

[[:digit:]]:[0-9]

[[:alnum:]]:[0-9a-zA-Z]

[[:space:]]:空格或tab键

[[:alpha:]]:[a-zA-Z]

\(..\):标记匹配字符

^:锚定行首

$:锚定行尾

\

\>:锚定词尾

x{m}:重复字符x,m次

x{m,}:重复字符x,至少m次

x{m,n}:重复字符x,至少m次,不多于n次

():分组

后向引用

\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

\2:

\3:

注意:某些字符略有不同

示例:与上面列出的示例进行对比

显示/etc/passwd文件中的两位数或三位数

第一种方法

92e36c37e9f79c433f53fe1849d40fd2.png

第二种方法

f37ff8425bdf6831d59e413cd80912ff.png

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

1fbb9d577ee374464c36559383f956ac.png

添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行

f01834c0bcd2d85b8b9865a9767768b9.png

显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)

04969fe6482641d9bbd0027026790957.png

找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

458b4e7ac5086ca7e1508065408dd620.png

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

1ddcee2233b7b55a2b4f2d37ff9a09a1.png

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

5ea1eb6e9264e4b4ed2ef8c11224ac03.png

fgrep命令:检索固定字符串,它不识别正则表达式,是快速搜索命令。

语法:fgrep [选项]PATTERN [FILE]...

常见的参数选项参照grep或egrep

示例:搜索/tmp/log/abc.log 下包含xy字符的行,包含大小写

5ad0ace9a0968ad3167399032d914c7f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值