NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## **grep 命令** [参考文件](http://man.linuxde.net/grep) grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 ~~~ 模式 : 有正则表达式字符及文本字符所编写的过滤条件 REGEXP :由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表达控制或通配的功能 分两类 : 基本正则表示式 :BRE 拓展正则表示式 :ERE grep -E ,egrep ~~~ >[success] 搜索当前目录下所有包含admin字符串的文件 > \-r :递归地读每一目录下的所有文件。这样做和 -d recurse 选项等价。 > \-n:搜索结果显示行号 > grep -rn 'admin' \* ~~~ 1 、显示/proc/meminfo 文件中一大小写s开头的行 grep '^[dD].*' /proc/meminfo grep -i '^d.*' /proc/meminfo 2 、 显示/etc/passwd文件中不以/bin/hash结尾的行 grep '.*/bin/bash$' /etc/passwd 3 、显示/etc/passwd文件的ID号最大的用户名 sort -t : -k3 -n /etc/passwd | tail -1 | cut -d : -f1 4 、如果root存在,显示其默认的shell程序 id rootaa &> /dev/null && su - root -c 'echo $SHELL' grep '^root' /etc/passwd | cut -d : -f7 5 、找出/etc/passwd中的两位或三位数 grep "\<[0-9]\{2,3\}\>" /etc/passwd 6 、显示/etc/rc.d/rc.sysinit 文件夹中,至少以一个空白字符开头的且后面存非空白字符的行 grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg 7 、找出 "netstat -tan" 命令的结果以LISTEN后跟0、1 或多个空白字符结尾的行 8 、找出 /etc/passwd 中以用户名结尾的行 grep "\(^[[:alnum:]]\+\>\).*\1$" /etc/passwd w | grep "^roota\>" &> /dev/null && echo 'root logined' || echo 'root die' 9 、检索日志,并显示该条日志的前后N行记录 grep -n -A1 -B1 'service=order.Spend.createOrder' 03.log ~~~ ~~~ 1、显示不注释查看文件内容 grep -Ev '^$|^#' /etc/login.defs ~~~ >[success] **Unix 的 grep 家族包括 grep、egrep 和 fgrep 。** egrep和fgrep的命令只跟grep有很小不同。 > **egrep** 是grep的扩展,支持更多的re元字符, > **fgrep** 就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。 > Linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。 > > Linux 上文本处理三剑客 > > * grep : 文本过滤(模式:pattern)工具 (grep 、 egrep 、fgrep ) > > * sed : \[stream editor\] 文本编辑器 > > * awk : Linux上实现gawk,文本报告生成器 >[success] grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。 >[success] grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。 >[info] grep \[options\] \[-e PATTERN | -f FILE\] \[FILE...\] > \- v :显示不能被pattern匹配到的行 > \- i :忽略字符大小写 > \- o :仅显示匹配到的字符串 > \- q :静默模式,不输出任何信息 > \- A # : after : 后#行 > \- B # :before , 前#行 > \- C # :content , 前后各#行 > \- E :使用ERE