Linux三剑客之grep命令

本文介绍了grep命令,作为Linux三剑客之一,grep是强大的文本搜索工具,支持正则表达式匹配。它的工作原理是在文件中查找指定模式,并且不改变原始文件。文章详细讲解了grep的常用选项和参数,并提供了环境准备的实例,如在Centos6.8服务器上的实践操作。
摘要由CSDN通过智能技术生成
1、grep简介

grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。Windows系统下类似命令FINDSTR。

grep用来基于正则去实现行过滤的工具;它有很多衍生命令:

egrep 扩展的grep,即默认使用扩展正则表达式的grep,更高级。

fgrep 专用于文件行过滤的工具。

2、grep的工作原理

grep命令在一个或多个文件中查找某个字符模式,如果这个模式中包含空格,就必须用引号把它括起来。grep命令中,模式可以是一个被引号括起来的字符串,也可以是单个词。位于模式之后的所有单词都被视为文件名。grep将输出发送到屏幕,它不会对输入文件进行任何修改或变化。grep返回的退出状态为0,表示成功。退出状态为1,表示没有找到。如果找不到指定的文件,退出状态为2。

3、grep命令的常用选项
--color=auto 对匹配到的文本着色显示。

-v           显示不被pattern匹配到的行,反向查找。

-V           或--version : 显示版本信息。

-i           忽略字符大小写。

-n           显示匹配的行号,在显示符合样式的那一行之前,标示出该行的列数编号。

-o           仅显示匹配到的字符串,只显示匹配PATTERN 部分。

-q           静默模式,不输出任何信息。

-a           或 --text : 不要忽略二进制的数据。

-A           # after, 后#行, 除了显示符合范本样式的那一列之外,并显示该行之后的内容。

-b           或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号,将可执行文件当文本文件来搜索。

-B           # before, 前#行,除了显示符合样式的那一行之外,并显示该行之前的内容。

-c           统计匹配的行数,计算符合样式的列数。

-C           # context, 前后各#行,除了显示符合样式的那一行之外,并显示该行之前后的内容。

-d           <动作>--directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-e           实现多个选项间的逻辑or关系,指定字符串做为查找文件内容的样式。

-E           使用ERE,相当于egrep。

-w           匹配整个单词,只显示全字符合的列。

-f           <规则文件>--file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

-F           相当于fgrep,不支持正则表达式, 将样式视为固定字符串的列表。

-h           查询多文件时不显示文件名。

-H           或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。

-l           查询多文件时只输出包含匹配字符的文件名, 列出文件内容符合指定的样式的文件名称。

-L           或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。

-s           不显示不存在或无匹配文本的错误信息。

-r           或 --recursive : 此参数的效果和指定"-d recurse"参数相同,递归搜索文件目录。

-x           --line-regexp : 只显示全列符合的列。

-y           此参数的效果和指定"-i"参数相同。

-G           或 --basic-regexp : 将样式视为普通的表示法来使用。
4、主要参数
\          忽略正则表达式中特殊字符的原有含义,转义符

^          匹配正则表达式的开始行

$          匹配正则表达式的结束行

^$         表示空行的意思

\<         从匹配正则表达式的行开始

\>         到匹配正则表达式的行结束

[]         单个字符,如[A]即A符合要求,匹配中括号内的字符,匹配指定范围内的任意单个字符

[^]        ^出现在[]内 代表排除“非” 举例:[^0-9] 排除纯数字  [^a-z] 排除纯字母 

[ - ]      范围,如[a-z]

?          匹配之前的项1次或0.          所有的单个字符

+          匹配之前的项1次或多次

*          表示有多个字符,长度也可以为0

()         匹配表达式,创建一个用于匹配的子串

.*         代表任意多个字符

\?         匹配01次字符

\+         匹配1或以上字符
环境准备
准备一台Centos6服务器
系统: Centos6.8
内存:1G
cpu: 2核
IP地址: 10.0.0.22
5、举例练习
# 匹配ab之间13个任意字符  .和{} 组合限定指定范围的任意字符串
[root@ slave ~]# grep 'a.\{1,3\}b' /etc/passwd
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@ slave ~]# 
# 过滤出邮件信息
[root@ slave ~]# grep '\<mail\>' /etc/passwd 
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@ slave ~]# 
# 输出超级用户信息
[root@ slave ~]# egrep '(ro+t).*\1' /etc/passwd 
root:x:0:0:root:/root:/bin/bash
[root@ slave ~]# 
# 编辑文件,添加完后wq保存退出。
vim 123.txt 
# 添加如下
123
456
789
000
^~`#$
%^%*^(&)_=
;'][[]/.,l'

###

###


fknakkfk

kfaktaktkakwt

# 打印出不以英文字开头的行
[root@ slave ~]# grep '^[^a-zA-Z]' 123.txt 
123
456
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值