Shell常用命令grep用法详解
1. 简介
1.1. 功能
搜索输入文件中满足匹配指定模式的文本行,并将匹配行输出到标准输出。
1.2. 用法
grep [option…] [patterns] [file…]
1.3. 参考
- 官方手册页面:http://www.gnu.org/software/grep/manual/grep.html
- 帮助命令:
man grep
grep --help
2. 选项详解
2.1. 匹配控制选项
选项 | 描述 | 示例 |
---|---|---|
-e
|
expression ,指定正则表达式,可重复指定
|
echo $'ABCD\nAbCd\nabcd'|grep -e 'ABC' -e 'abc'
|
-f
|
file ,从文件中读取表达式,一行为一个表达式
|
|
-i
|
ignore ,忽略大小写
|
echo $'ABCD\nAbCd\nabcd'|grep -i 'abc'
|
-v
|
invert ,反向匹配,匹配不满足表达式的行
|
echo $'ABCD\nAbCd\nabcd'|grep -v 'ABC'
|
-w
|
word ,单词匹配,匹配表达式在行中为单词的行
|
echo $'ABC DEF\n”DEF"\nCDEF'|grep -w 'DEF'
|
-x
|
exactly ,全行匹配,要求整行匹配表达式
|
echo $'ABC DEF\nDEF'|grep -x 'DEF'
|
2.2. 通用输出控制选项
选项 | 描述 | 示例 |
---|---|---|
-c
|
count ,只输出匹配到的总行数
|
echo $'ABCD\nAbCd\nabcd'|grep -ic 'abc'
|
-l
|
files-with-matches ,只输出包含匹配行的文件名
|
grep -l 'root' /etc/passwd /etc/hosts
|
-L
|
files-without-match ,只输出不包含匹配行的文件名
|
grep -L 'root' /etc/passwd /etc/hosts
|
-m
|
max-count ,匹配到指定行数后停止匹配,只输出前面匹配到的行
|
echo $'A\nAB\nAB'|grep -m 2 'A'
|
-o
|
only-matching ,只输出行中的匹配部分,一行中多个匹配项会分行输出
|
echo $'A\nAB\nABA'|grep -o 'A'
|
-q
|
quiet ,屏蔽所有输出,只要匹配到了一行,立刻以0状态退出
|
echo 'A'|grep -q 'A';echo $?
|
-s
|
slient ,屏蔽错误信息
|
grep -s 'A' nonexistentFile
|
2.3. 输出前缀控制选项
选项 | 描述 | 示例 |
---|---|---|
-b
|
byteOffset ,添加匹配行的字节偏移量前缀,结合-o 为匹配项的字节偏移量
|
echo $'B\nAB\nB'|grep -b 'B'
|
-h
|
hideFileName ,不添加匹配行的文件名前缀
|
grep -h 'root' /etc/passwd /etc/hosts
|
-H
|
添加匹配行的文件名前缀,多个输入文件时为默认选项 |
grep -H 'root' /etc/passwd
|
-n
|
number ,添加行号前缀
|
grep -n 'root' /etc/passwd
|
-T
|
table ,多个前缀时,使用TAB进行对齐,前缀顺序:Hnb
|
grep -THnb 'root' /etc/passwd
|
-Z
|
zero ,使用NUL 字符分隔文件名,可结合-l 使用
|
grep -Zl 'o' /etc/passwd /etc/hosts
|
2.4. 上下文行控制选项
选项 | 描述 | 示例 |
---|---|---|
-A
|
after ,附带输出匹配行的前几行,和匹配行组合一个组
|
grep -A2 'root' /etc/passwd
|
-B
|
before ,附带输出匹配行的后几行
|
grep -B2 'root' /etc/passwd
|
-C
|
context ,附带输出匹配行的前后几行
|
grep -C2 'root' /etc/passwd
|
--group-separator
|
指定组的分隔符,默认为--
|
grep -C1 --group-separator='==SEP==' 'root' /etc/passwd
|
--no-group-separator
|
不使用组分隔符 |
grep -C1 --no-group-separator 'root' /etc/passwd
|
2.5. 文件和目录选项
选项 | 描述 | 示例 |
---|---|---|
-r
|
recursive ,递归的读取目录下的所有文件
|
grep -r 'localhost' /etc
|
-R
|
recursive ,递归的读取目录下的所有文件,包括符号链接
|
grep -r 'localhost' /etc
|
--exclude
|
跳过匹配指定表达式的文件 |
grep -rl 'localhost' /etc --exclude='hosts*'
|
--exclude-from
|
从指定文件中读取要跳过的文件表达式` | |
--exclude-dir
|
跳过匹配指定表达式的目录 |
grep -rl 'localhost' /etc --exclude-dir='pki'
|
3. 正则表达式说明
grep中的正则表达式官方介绍: http://www.gnu.org/software/grep/manual/grep.html#Regular-Expressions
Shell常用命令grep用法详解相关推荐
- 乌班图linux命令,乌班图Ubuntu常用命令及用法详解
1.ls 这个相当于Windows 下的dir命令,可以列出当前窗口或指定窗口下的内容. 2.rm 这个相当于Windows 下的del 和rmdir 命令,可以删除文件及文件夹. 常见用法:rm - ...
- linux常中的cat命令,cat命令-linux常用命令cat用法详解
cat命令用于连接文件打印到输出设备中 cat是linux的基本文本输出命令,通常用于查看文件内容. 语法 cat (参数)(选项) -n 或 --number:由 1 开始对所有输出的行数编号. - ...
- linux中grep命令 菜鸟教程,linux grep正则表达式与grep用法详解
需要大家牢记:正则表达式与通配符不一样,它们表示的含义并不相同 正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理.本文以grep为例来讲解正则表达式. grep命令 ...
- Linux系统常用命令及其使用详解大全
Linux系统常用命令及其使用详解大全 整理了linux常用的命令,最长常用的也就几十个,cd,ls ,vi等等,有些容易忘记,经常拿出来看看. 其他的可以推荐一个网站,https://www.lin ...
- docker实践(2)常用命令和DockerFile详解
<docker实践(1) 入门和springBoot实践部署> <docker实践(2)常用命令和DockerFile详解> <docker实践(3) 仓库registr ...
- linux管道命令详解,Linux系统中的管道命令的用法详解
Linux系统中管道命令是linux系统的一个强大之处.下面由学习啦小编为大家整理了Linux系统中的管道命令的用法详解的相关知识,希望对大家有帮助! Linux系统中的管道命令的用法详解 管道命令操 ...
- linux只输入wc命令,Linux系统中wc命令的用法详解
在Linux系统中,wc命令不太经常用到,只是在统计字数的时候才会使用该命令,那么下面由学习啦小编为大家整理了linux系统中wc命令的详细解释的相关知识,希望对大家有帮助! Linux系统中wc命令 ...
- linux 移动剪切命令,Linux中vi的复制命令的用法详解
在Linux系统中,使用VI编辑的时候经常用到的操作就是复制粘贴,那么下面由学习啦小编为大家整理了linux中vi的复制命令的用法详解的相关知识,希望对大家有帮助! Linux中vi的复制命令的用法详 ...
- 给mysql 授权 命令_mysql中授权命令grant用法详解:
mysql中授权命令grant用法详解: mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为: gra ...
最新文章
- Spring集成TestNg测试
- java 程序片段_20个非常有用的Java程序片段
- 使用TortoiseSVN新建及合并分支图文教程
- 基于hi-nginx的web开发(python篇)——cookie和会话管理
- 关于 动态分流系统 ABTestingGateway 的想法
- linux+多路复用socket,socket的select_多路复用
- Postman都脱单了,我决定用他女朋友Postwoman了
- java检索账号和密码_如何从数据库中检索密码
- java2实用教程第六版习题答案
- Mifare经典工具如何使用(下)-- 手把手教你使用MCT
- 急需能临时发邮件的临时邮箱 临时邮箱怎么注册 邮箱163注册入口在哪
- AdGuard Home 使用设置以及DNS测速软件
- 详谈APP移动端 - 加壳与脱壳
- 微信小程序中如何有效的修改app.js中全局变量的值,并能在页面中进行动态响应
- 17个支持图片外链的免费相册
- Linux mail 配置
- 神经网络学习——第一个代码学习
- OpenGL和DirectX
- 经典布局(flex和传统两种实现)—左中右三栏式
- mac本地安装PHP redis扩展
热门文章
- Android短视频系统源码功能测试(个人总结完整版)
- Java中的微信支付: 微信API-V3签名生成工具类
- php中的分割函数,php分割字符串方法,php分隔字符函数
- 虚拟主机如何连接服务器的,虚拟主机需要怎么连接服务器
- ios dat 文件读写_Xilisoft iPad Magic Platinum for Mac(ios设备文件传输和转换工具)_资源共享论坛...
- 鸿蒙3.0系统下载,华为鸿蒙OS3.0系统下载
- 基于FastestDet目标检测模型实现火点烟雾检测
- Hardware Composer
- 2021 IEEE编程语言排行榜:Python排名榜首!
- 凡是过去,皆为序章--2021年区块链安全事件年度总结