## **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
- 基础
- 文档帮助
- 计算机基础知识
- Centos文件系统
- Linux基础知识入门
- Linux命令帮助文档
- 常见命令
- 其他
- vim编辑器
- 编辑命令
- 末行模式
- 常见命令
- 配置文件
- 用户useradd
- 用户login.defs
- 环境变量设置
- 常用命令
- 帮助命令
- 管道符
- 关机和重启
- 目录操作
- 目录结构
- ls
- cd
- pwd
- mkdir
- rmdir
- cp
- rm
- mv
- 文件操作
- touch
- ln 重点
- stat 重点
- file
- cat
- tac
- nl
- more
- less
- head
- tail
- 文件处理工具
- wc
- cut
- sort
- uniq
- 文件属性(权限)
- chmod
- chown
- chgrp
- umask
- sudo权限
- chattr权限
- chattr
- lsattr
- 文件特殊权限
- SetUID
- SetGID
- StickyBIT粘着位
- ACL权限
- 搜索命令
- 命令搜索whereis
- grep
- 拓展
- 元字符
- egrep
- locate
- find
- type
- 压缩和解压
- zip和unzip
- gzip和gunzip
- bzip2和bunzip2
- tar
- 网络管理
- netstat网络状态
- 消息邮件
- 软件包安装
- 源码包
- 二进制包
- rpm手工安装
- yum在线安装
- 系统管理
- 常用命令
- shell内建命令
- pstree
- bash 特性
- history 历史命令
- 补全、快捷键
- 命令行展开
- 命令执行结果
- alias命令别名
- 通配符
- 重定向及管道
- 计算机运算
- bash 中的变量的种类
- bash 的配置文件
- bash中的算术运算
- bash条件测试
- 用户和组管理
- 用户管理
- useradd
- usermod
- userdel
- passwd
- pwck
- chage
- chsh
- chfn
- id
- finger
- su
- 用户组管理
- groupadd
- groupmod
- groupdel
- gpasswd
- groups
- 用户查看
- whoami
- w
- who
- last
- lastlog
- lastb
- 网络管理
- 相关命令
- 防火墙
- 文件拷贝
- 软件工具
- 软件包管理
- Gcc软件安装
- 其他
- redis
- 相关资料
- swoole
- IDE工具
- vscode + Xdebug 断点调试
- vscode 远程链接
- git
- 不想输入账户密码
- window电脑问题
- 浏览器https访问不了
- php
- 常用函数
- rabbitMQ
- mysql
- 触发器
- 常用更新语句
- 忘记密码处理方法
- 查询
- 数据迁移
- 加索引不加锁
- 查询优化
- 基础知识
- 进程线程协程
- tp6
- 注册自定义命令空间
- Ajax异常错误
- nginx
- 域名变成ip问题
- 概念知识点
- QPS,TPS,RT概念
- Nginx服务大量TIME-WAIT
