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 ...
随机推荐
- 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第二节:WebRequest
本节主要来介绍一下,在C#中制造爬虫,最为常见.常用.实用的基础类 ------ WebRequest.WebResponse. 先来看一个示例 [1.2.1]: using System; usin ...
- mysql的压缩版安装
MYSQL压缩版 自己建立: data(位于mysql的bin一层文件夹),my.ini(文本) my.ini(下面是文本内容) [client] port=3306 default-characte ...
- Java服务端两个常见的并发错误
理想情况来讲,开发在开始编写代码之前就应该讲并发情况考虑进去,但是大多数实际情况确是,开发压根不会考虑高并发情况下的业务问题.主要原因还是因为业务极难遇到高并发的情况. 下面列举两个比较常见的后端编码 ...
- ZJCTF预赛一个.py的逆向题
#!/usr/bin/env python # -*- coding:utf-8 -*- from hashlib import sha256 def xor(a,b): result = [] fo ...
- WeihanLi.Npoi 根据模板导出Excel
WeihanLi.Npoi 根据模板导出Excel Intro 原来的导出方式比较适用于比较简单的导出,每一条数据在一行,数据列虽然自定义程度比较高,如果要一条数据对应多行就做不到了,于是就想支持根据 ...
- HashMap在JDK7和JDK8中的区别
在[深入浅出集合Map]中,已讲述了HashMap在jdk7中实现,在此就不再细说了 JDK7中的HashMap 基于链表+数组实现,底层维护一个Entry数组 Entry<K,V>[] ...
- Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建
之前写的那篇Spring框架学习笔记(5)--Spring Boot创建与使用,发现有多小细节没有提及,,正好现在又学习了mybatis plus这款框架,打算重新整理一遍,并将细节说清楚 1.通过I ...
- 【WPF学习】第二十七章 Application类的任务
上一章介绍了有关WPF应用程序中使用Application对象的方式,接下来看一下如何使用Application对象来处理一些更普通的情况,接下俩介绍如何初始化界面.如何处理命名行参数.如何处理支付窗 ...
- POI导入导出excel(附工具类)
关于POI导出excel的功能我在前面的文章已经写过了,POI导出excel的三种方式 , 导出表格数据到excel并下载(HSSFWorkbook版) ,本篇文章主要是将导入导出功能进一步地封装,在 ...
- jenkins集成gitlab
一.配置jenkins 1.安装Gitlab Hook Plugin )生成随机token 在系统中生成 openssl rand -hex 0f2a47c861133916d2e299e3 )创建 ...