900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > linux命令grep搜索倒序输出 Linux下的grep搜索命令详解(一)

linux命令grep搜索倒序输出 Linux下的grep搜索命令详解(一)

时间:2020-06-06 17:41:43

相关推荐

linux命令grep搜索倒序输出 Linux下的grep搜索命令详解(一)

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是GlobalRegularExpressionPrint,表示全局正则表达式版本,它的使用权限是所有用户。

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

1.命令格式:

grep[option]patternfile

主要参数:

-c:只输出匹配行的计数。

-I:不区分大 小写(只适用于单字符。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及 行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

2.命令功能:

用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。

3.命令参数:

-a --text #不要忽略二进制的数据。

-A --after-context= #除了显示符合范本样式的那一列之外,并显示该行之后的内容。

-b --byte-offset#在显示符合样式的那一行之前,标示出该行第一个字符的编号。

-B --before-context= #除了显示符合样式的那一行之外,并显示该行之前的内容。

-c --count#计算符合样式的列数。

-C --context=或- #除了显示符合样式的那一行之外,并显示该行之前后的内容。

-d --directories= #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-e --regexp= #指定字符串做为查找文件内容的样式。

-E --extended-regexp#将样式为延伸的普通表示法来使用。

-f --file= #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

-F --fixed-regexp#将样式视为固定字符串的列表。

-G --basic-regexp#将样式视为普通的表示法来使用。

-h --no-filename#在显示符合样式的那一行之前,不标示该行所属的文件名称。

-H --with-filename#在显示符合样式的那一行之前,表示该行所属的文件名称。

-i --ignore-case#忽略字符大小写的差别。

-l --file-with-matches#列出文件内容符合指定的样式的文件名称。

-L --files-without-match #列出文件内容不符合指定的样式的文件名称。

-n --line-number#在显示符合样式的那一行之前,标示出该行的列数编号。

-q --quiet或--silent#不显示任何信息。

-r --recursive#此参数的效果和指定“-d recurse”参数相同。

-s --no-messages#不显示错误信息。

-v --revert-match#显示不包含匹配文本的所有行。

-V --version#显示版本信息。

-w --word-regexp#只显示全字符合的列。

-x --line-regexp#只显示全列符合的列。

-y#此参数的效果和指定“-i”参数相同。

将/etc/passwd,有出现 root 的行取出来

[finance@master2-dev finance]$ grep root /etc/passwdroot:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[finance@master2-dev finance]$ grep 'root' /etc/passwdroot:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

将/etc/passwd,有出现 root 的行取出来,同时显示这些行在/etc/passwd的行号

[finance@master2-dev finance]$ grep -n root /etc/passwd

1:root:x:0:0:root:/root:/bin/bash11:operator:x:11:0:operator:/root:/sbin/nologin

在关键字的显示方面,grep 可以使用 --color=auto 来将关键字部分使用颜色显示。 这可是个很不错的功能啊!但是如果每次使用 grep 都得要自行加上 --color=auto 又显的很麻烦~ 此时那个好用的 alias 就得来处理一下啦!你可以在 ~/.bashrc 内加上这行:『alias grep='grep --color=auto'』再以『 source ~/.bashrc 』来立即生效即可喔! 这样每次运行 grep 他都会自动帮你加上颜色显示啦

用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,要将捉到的关键字显色,且加上行号来表示

[finance@master2-dev finance]$ dmesg | grep -n --color=auto 'eth'

603:eth0: no IPv6 routers present

在关键字所在行的前两行与后三行也一起捉出来显示

[finance@master2-dev finance]$ dmesg | grep -n -A3 -B2 --color=auto 'eth'

601-RPC: Registered tcp transport module.602-RPC: Registered tcp NFSv4.1backchannel transport module.603:eth0: no IPv6 routers present604-hrtimer: interrupt took 5294012ns605-rz[13034]: segfault at fffffffffffffff9 ip 00000038a4a7b93c sp 00007fff00deed88 error 4 in libc-2.12.so[38a4a00000+18a000]606-sh[5880]: segfault at 0 ip (null) sp 00007fffbfac9e70 error 14 in bash[400000+d4000]

根据文件内容递归查找目录

# grep 'energywise' * #在当前目录搜索带'energywise'行的文件

# grep -r 'energywise' * #在当前目录及其子目录下搜索'energywise'行的文件

# grep -l -r 'energywise' * #在当前目录及其子目录下搜索'energywise'行的文件,但是不显示匹配的行,只显示匹配的文件

这几个命令很使用,是查找文件的利器。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。