网站首页 > 技术文章 正文
摘要:grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。grep 命令用于查找文件里符合条件的字符串,它能使用正则表达式搜索文本,并把匹配的行打印出来。作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,就像在windows中打开txt文件,然后使用快捷键 “Ctrl+F” 在文本中查找某个字符串一样,就是说可以把grep理解成字符查找工具。
一、命令格式:grep [option] pattern file
常用参数 | |
-a --text | 不要忽略二进制的数据。 将 binary 文件以 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”参数相同。 |
--color=auto | 可以将找到的关键词部分加上颜色的显示 |
二、使用例子
说明:grep 搜索字符串的命令格式:grep string filename
寻找字串的方法很多,比如想找所有以P开头的行。
^P 以P开头的行,^表示开始的意思
P$ 以P结尾的行,$表示结束的意思
^[0-9] 以数字开始的行,[]内可列举字母
^[124ab] 以1,2,4,a,或b开头的行
* 星号表示0个以上的字母(可以没有)
+ 加号表示1个以上的字母
.\ 斜线可以去掉特殊意义
<eg> grep \'^.\' myfile.txt 列出所有以句点开头的行。
1、查找指定进程
执行指令# ps -ef|grep java。如下图
2、查找指定进程个数
执行指令# ps -ef|grep -c java。如下图
3、将多个文件之间相同的行输出来
首先执行指令# cd /etc/sysconfig/network-scripts/
然后执行指令# grep "IPADDR" ifcfg-ens192 ifcfg-lo。如下图
4、输出被模式匹配到行
执行指令# grep "root" /etc/passwd。如下图
5、只输出被模式匹配到的字符串,而不是整个行
执行指令# grep -o "root" /etc/passwd。如下图
6、从文件中查找关键词,默认情况区分大小写
执行指令# grep 'User' /etc/passwd。如下图
7、从文件中查找关键词,忽略大小写,默认情况区分大小写
执行指令# grep -i 'user' /etc/passwd。如下图
8、统计文件的行数
执行指令# grep -c "^.*#34; /etc/passwd。如下图
等同于指令# wc –l。如下图
9、匹配正则表达式的开始行
执行指令# grep '^root' /etc/group。如下图
10、匹配正则表达式的结束行
执行指令# grep 'user#39; /etc/group。如下图
11、使用扩展模式匹配
执行指令# netstat -an|grep -E "ESTABLISHED|WAIT|LISTEN"。如下
猜你喜欢
- 2024-10-19 Java高频面试题之Linux(java面试 linux)
- 2024-10-19 性能测试能力提升-JVM GC监控和优化
- 2024-10-19 排查GC问题常用的工具(排查问题的方式有哪些)
- 2024-10-19 开发好物推荐8之自动化部署插件,再也不用登录SSH
- 2024-10-19 20道阿里巴巴中高级java面试题详解,把这些弄懂offer拿到你手软
- 2024-10-19 Java Web实战篇:发布和运维必备的12条Linux命令
- 2024-10-19 Java工程师常用Linux命令大全(linux javac)
- 2024-10-19 玩转linux下启动jar和关闭jar方式(java程序员必看)
- 2024-10-19 超详细的EFK安装部署教程--环境准备篇
- 2024-10-19 为什么阿里架构师是这样定位Java性能问题的?这几点总结的很详细
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)