grep知识及常用用法梳理
1. grep语法及其参数说明
grep是文本搜索工具,能根据用户指定的'PATTERN模式'目标文本进行逐行匹配检查,注意grep默认会以 行 为单位打印匹配到的行.
以下是grep命令的语法及常用参数:
grep [OPTIONS] PATTERN [FILE...]
选项 模式 文件
###参数及含义
--color=auto #<==匹配成功显示颜色
-v #<==排除
-i #<==忽略大小写
-n #<==显示匹配行及其行号
-o #<==仅显示匹配到的字符串
-w #<==只匹配过滤的单词
-q #<==静默参数,不输入任何信息
-r #<==递归过滤目录下的文件
-A #<==after,后n行
-B #<==before,前n行
-C #<==前后各n行
-E #<== 相当于egrep,同时过滤多个,中间使用 | 分隔
2. grep命令常用用法
######命令参数常用用法:
[root@test ~]# cat a.txt
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@test ~]# grep -n 'ntp' a.txt #<==显示字符串所在行及其行号
3:ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@test ~]# grep -v '^ntp' a.txt #<==排除用法,将以ntp开头的行排除后打印输出
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@test ~]# grep -i 'Privilege' a.txt #<==忽略大小写,输出字符串匹配到的行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@test ~]# grep -o 'Privilege' a.txt #<==仅仅显示匹配到的字符串
Privilege
[root@test ~]# grep -w 'Privilege' a.txt #<==很少用,匹配单词,但有时用于脚本中匹配指定的用户
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@test ~]# seq 10 >a.txt
[root@test ~]# grep -E "1|2" a.txt #同时过滤多个字符串所在的行
[root@test ~]# grep -A 3 '5' a.txt #<==显示字符串5及后面3行
5
6
7
8
[root@test ~]# grep -B 3 '5' a.txt #<==显示字符串'5'及之前3行
2
3
4
5
[root@test ~]# grep -C 3 '5' a.txt #<==显示字符串'5'及前后3行
2
3
4
5
6
7
8
######配合正则表达式常用用法(注意:使用egrep就无需 \ 反斜线转义,grep使用正则需要 \ 转义)
[root@test ~]# cat a.txt
abxy
xay
xxxxxxxxy
x
[root@test ~]# grep 'x*?y' a.txt #<==注意,这里不会匹配到任何内容,此时?代表单个字符
[root@test ~]# grep 'x*y' a.txt #<==贪婪模式(最长匹配原则)匹配
abxy
xay
xxxxxxxxy
[root@test ~]# grep 'x*\?y' a.txt #<==此时问号是正则,代表匹配前面字符0次或1次
abxy
xay
xxxxxxxxy
[root@test ~]# grep 'a.*y' a.txt #<==.*代表任意内容
abxy
xay
[root@test ~]# grep 'x\?y' a.txt
abxy
xay
xxxxxxxxy
[root@test ~]# grep 'x\+y' a.txt #<==+号匹配前面字符x至少1次
abxy
xxxxxxxxy
#####匹配次数
[root@test ~]# tail -5 /etc/passwd >a.txt
[root@test ~]# cat a.txt
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@test ~]# grep -o '[a-z]\{3\}t' a.txt #<==匹配文本中,t字符串的前面有3个随意小写字母的字符串
ount
abrt
abrt
arat
empt
post
post
[root@test ~]# grep -o '[a-z]\{3,5\}t' a.txt #<==匹配,t字符串的前面有3-5个小写字母的字符串
[root@test ~]# grep -o '[a-z]\{,5\}t' a.txt #<==匹配,t字符串的前面有至多5个小写字母的字符串
[root@test ~]# grep -o '[a-z]\{3,\}t' a.txt #<==匹配,t字符串的前面有至少3个小写字母的字符串
#####位置锚定
[root@test ~]# cat a.txt
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@test ~]# grep -o '\<[a-z]\{3\}t' a.txt #<==必须出现单词首部
abrt
abrt
empt
post
post
[root@test ~]# grep -o '\<[a-z]\{3\}t\>' a.txt #<==锚定 单词尾部
abrt
abrt
[root@test ~]# ifconfig eth0|sed -n '2p'|grep -o '\<10.0.0.30\>' #<==grep功能不擅长过滤此种内容
10.0.0.30
######生产常用于去除空行和以#号开头的行
[root@test ~]# grep -Ev "^$|^#" /etc/yum.repos.d/CentOS-Base.repo
grep知识及常用用法梳理的更多相关文章
- sed知识及常用用法梳理
1.sed命令简介及其参数说明 sed流编辑器,擅长对文本进行增删改查,过滤指定的字符串和取指定行,也可以在行中字符串前后插入内容,功能非常强大. 注意:sed默认只支持基本的正则表达式,如果要想支持 ...
- grep参数说明及常用用法
grep参数说明及常用用法 趁着午休的时间把自己经常使用的一些grep命令整理一下. 方便以后查看. 后续会逐步把awk/sed/find等常用的命令理一理. 增强下记忆. 也算是对得起自己了. ^^ ...
- grep参数说明及常用用法(转)
转:https://www.cnblogs.com/leo-li-3046/p/5690613.html grep常用参数说明 grep [OPTIONS] PATTERN [FILE...] gre ...
- grep 的一些常用用法
打印匹配到的上下5行 grep -C 5 'root' /etc/passwd 上下5行 grep -A 5 'root' /etc/passwd afte ...
- grep常用用法
grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件 ...
- 预备知识-python核心用法常用数据分析库(上)
1.预备知识-python核心用法常用数据分析库(上) 目录 1.预备知识-python核心用法常用数据分析库(上) 概述 实验环境 任务一:环境安装与配置 [实验目标] [实验步骤] 任务二:Pan ...
- [转]ssh常用用法小结
ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...
- ssh常用用法小结
ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...
- iptables-25个常用用法【转】
本文介绍25个常用的iptables用法.如果你对iptables还不甚了解,可以参考上一篇iptables详细教程:基础.架构.清空规则.追加规则.应用实例,看完这篇文章,你就能明白iptables ...
随机推荐
- 自媒体工具OpenWrite
自媒体工具OpenWrite 本篇主要介绍一款自媒体工具OpenWrite,如果你平时喜欢写写文章又或者写写笔记 你可以使用OpenWrite 统一将你写的文章发布到各个平台 包括 CSDN . S ...
- 【C_Language】---最全面的C指针总结,初级程序员必备
好久没写博客了,重新学习C语言了的基础课程,发现很多东西都忘记的差不多了,闲来无事,总结一下关于指针的知识,希望能帮到像我一样的菜鸟们: 指针,众所周知是C语言的精华所在,不懂指针的话,你就不要说你学 ...
- HTML中使用Vue+Dhtmlxgantt制作任务进度图
HTML中使用Vue+Dhtmlxgantt制作任务进度图 Dhtmlxgantt官网: https://dhtmlx.com/docs/products/dhtmlxGantt/ 参考文章 甘特图配 ...
- 状态压缩 hdu #10
You are playing CSGO. There are n Main Weapons and m Secondary Weapons in CSGO. You can only choose ...
- 一道简单到爆 Java面试题,居然挂了一票人
很多时候bug往往都是出在,我们觉得非常简单,不起眼的基础知识上 年前公司最后一波招人,为年后项目做技术储备,主要招聘对象初中级Java开发,要求也并没有多苛刻,唯一一点基础稍好,快速上手做项目就行. ...
- context:component-scan标签的诠释
XML中配置context:component-scan时,spring会自动的扫描这个包下被这些注解标识的类@Component,@Service,@Controller,@Repository,同 ...
- java8 stream自定义分组求和并排序
public static void main(String[] args) { List<GroupDetailDTO> list = new ArrayList<>(); ...
- typescript 为什么使用 let呢
为什么是使用let呢 因为已经厌烦了 int var 呵呵
- 在ubuntu18.04下搭建kvm
前一段时间一直在尝试Ubuntu上搭建xen,一直出现各种问题,各种坑 首先先感谢下面这个公司对我的耐心解答,非常感谢.特别是后面来的电话对我进行了详细的解答,所以选择搭建kvm. 1. 需要检查一下 ...
- unity调试native c/c++ dll
最近使用xlua,需要添加自定义的c lua库.研究了一下unity调试native c/c++ dll.方法如下: 通过Unity打开VS工程 VS菜单栏[工具]-> [选项] 在选项对话框中 ...