博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell基础之-grep命令
阅读量:5873 次
发布时间:2019-06-19

本文共 2772 字,大约阅读时间需要 9 分钟。

grep命令

首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!

我会在当天或者第二天及时回复,并且改进~~


grep 一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

grep [option] [mode] [file]

-c      #只输出匹配行的数量-i      #搜索时忽略大小写-h      #查询多文件时不显示文件名-l      #只列出符合匹配的文件名,而不列出具体的匹配行-n      #列出所有的匹配行,并显示行号-s      #不显示不存在或无匹配文本的错误信息-v      #显示不包含匹配文本的所有行-w      #匹配整词-x      #匹配整行-r      #递归搜索,不仅搜索当前工作目录,而且搜索子目录-q      #禁止输出任何结果,以退出状态表示搜索是否成功-b      #打印匹配行距文件头部的偏移量,以自己为单位-o      #与-b选项结合使用,打印匹配的词距头部的偏移量,以字节为单位-E      #支持扩展的正则表达式-F      #不支持正则表达式,按照字符串的字面意思进行匹配

示例

grep -c root  /etc/passwd  #文本中有两个root匹配,即显示行数为2grep -i xxx   new_file     #文本中有XXX和xxx,-i之后会忽略大小写都输出出来grep -h root /etc/passwd /etc/shadow  #-h只会显示匹配的行,而不会显示匹配与哪个文件grep -l root /etc/passwd /etc/shadow  #-l只会显示匹配的文件名,而不列出具体的匹配行grep -n root /etc/passwd   #-n在输出匹配结果前面会加匹配的行号grep -s root /etc/passwd   #不显示错误信息,例如: grep root /etc/passwdwdwd grep -v root /etc/passwd   #列出除了匹配行root以外的所有行grep -w root /etc/passwd   #列出文件中有单个root的单词的行grep -x root /etc/passwd   #列出文件中有单个root为整行的行grep -r root /tmp          #列出/tmp下面的root及子目录文件下的root,递归查询出所有的root字符grep -q root /tmp/root     #不输出任何信息,以退出方式,成功为0,不成功为其他值grep -vc root /etc/passwd /etc/shadow  #显示出文件pass和sha中有多少行是不包含root的行

1、匹配行首

(1)、检索”/etc/passwd”中以”root”开头的行,并打印出行号

grep -n ^root /etc/passwd

(2)、检索”/etc/services”文件中的空行,列出行号。再次检索空行有几行

grep -n ^$ /etc/services grep -c ^$ /etc/services

(3)、搜索文件中以”-“开头,并且重复任意次,然后是D字符的匹配行

搜索文件中以”/”开头,中间”4”个任意字符,第”6”个字符仍为”/”的匹配行

grep ^-*D filenamegrep ^/..../ filename

(4)、搜索”sed.edu.cn”的匹配行

grep sed\.edu\.cn

(5)、搜索”-“符号重复5次的文本行

搜索”the”精确匹配的行

grep '\-\{
5\}' filename #考验''和\{
\}表达式的特性grep '\
' filename #考验''和\<\>表达式的特性

grep #标准grep命令。支持正则表达式

egrep #扩展grep命令。支持基本和扩展正则表达式
fgrep #快速grep命令。不支持正则表达式,按照字符串的字面意思进行匹配

egrep #命令与 grep -E等价

fgrep #命令与 grep -F等价

分析下面的正则表达式表达了什么含义

(1)、kK*          grep kK* test            #列出文件test包含kK及后面有任意多个字符的行(2)、k\{6,8\}     grep  'k\{6,8\}' test    #列出文件test中k单词重复6-8个的行(3)、k\{6,\}      grep  'k\{6,\}' test     #列出文件test中k单词大于6个的行(4)、k\{10\}      grep  'k\{6\}' test      #列出文件test中k单词为6个的行(5)、^NEW YEAR$          (6)、^$                                    #空行(7)、[0-9][0-9][a-z]  grep [0-9][0-9][a-z] file  #列出文件中前两个字符为数字,后一个字符为字母的匹配行(8)、[A-H]\{1,3\},[0-9]\{5\} #grep '[a-h]\{1,3\}' test | grep '[0-9]\{5\}'       #列出1-3个a-h单词,5个数字的字符(9)、^\...(10)、[^p-z]*\.                                  #列出除了p-z以外的多个任意字符的行

2、利用通配功能列出某目录下所有以数字开头,最后3为是句点和2个任意字母的文件名

[0-9]*[a-z]\{
2\}...

3、查看下面三条命令

grep -c  ^$   filename    #列出空行的数目   grep -c ^[^$] filename    #列出非空行的数目   grep -c ^^$   filename

4、统计当前目录及子目录下的所有文件所包含空白行的行数

grep -r ^$ /root/ | wc -l

5、统计当前目录及子目录下的所有文件包含非空白行的行数

grep -r ^[^$] /root/ | wc -l

6、结合对-符号的阐述,观察是否对错

grep -n -\{
5,\} file #缺引号,缺转义符\-grep -n '-\{
5,\}' file #缺转义符,系统默认不知道-是选项,应使用grep -n '\-\{
5,\}' file

转载地址:http://btenx.baihongyu.com/

你可能感兴趣的文章
监控摄像机的区别和分类
查看>>
Java学习——对象和类
查看>>
ElasticSearch 组合过滤器
查看>>
HttpClient连接池的连接保持、超时和失效机制
查看>>
1-4 多文档界面处理(2)
查看>>
《Essential Linux Device Drivers》中文版第1章
查看>>
让远程传输大文件变得更快
查看>>
iOS:Xcode7下创建 .a静态库 和 .framework静态库
查看>>
complex的小困惑
查看>>
十进制、十六进制、二进制的转换
查看>>
双网卡centos7 iptables防火墙与/etc/rc.d/rc.local开机运行
查看>>
tomcat PermGen space 不足的解决方法
查看>>
STM32系统滴答_及不可不知的延时技巧 - (上)
查看>>
Linux下企业级分区方案
查看>>
CentOS下LAMP一键yum安装脚本
查看>>
拖来拖去今天终于重装系统了
查看>>
NestJS 脑图
查看>>
我的友情链接
查看>>
Html body的滚动条禁止与启用
查看>>
Tengine新增nginx upstream模块的使用
查看>>