作者简介
李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷。喜欢钻研底层技术,认为底层基础才是王道。一切新技术都离不开操作系统(CPU、内存、磁盘)、网络等。坚持输入输出,记录自己学习的点滴,在平凡中坚持前行,总有一天会遇见不一样的自己。公众号:运维汪(ID:Leeeee_Li)。

一、前言

自己平时比较喜欢记笔记,工作四五年,笔记上千篇。最近离职了,加上职场瓶颈,准备好好复盘和整理一下相关的笔记、梳理一下知识点,可能后面有一系列的博文输出,从基础到进阶。
 
 
 

二、什么是Grep

Global Regular Expression Print 全局正则表达式
 
Grep是一个Linux / Unix命令行工具,用于在指定的文件中搜索字符串。文本搜索模式被称为正则表达式。当它找到匹配项时,它将输出带有结果的行。在搜索大型日志文件时,grep命令非常方便。
 
语法:
grep [options] pattern [files]
 

三、常用参数

-c: 只输出匹配行的数目

-h: 打印出匹配的行,但是不显示其文件名

-i: 不区分大小写

-l: 查询多文件的时候只输出包含匹配字符的文件名

-n: 打印匹配行以及行号

-v: 反向匹配,即显示不匹配的行

-w: 匹配整个单词,而不是整个字符串

-b: 显示匹配的位置

-o: 只显示匹配的字串

-s: 不显示错误信息

-e exp:匹配多个

-E:使用正则匹配

 

四、实例

1:匹配项标记颜色

echo “This is a word \n heihei” |grep word --color=auto

2:把/etc/passwd包含root的取出来

grep root /etc/passwd      or     cat /etc/passwd |grep root 
3:把/etc/passwd不包含root的取出来
grep -v root /etc/passwd  or     cat /etc/passwd |grep -v root
4:demsg输出的信息中找出含eth的行,并且输出行号,有颜色
dmesg | grep eth -n --color=auto
5:demsg输出的信息找出eth的行,并且找出含eth的前两行和后三行
dmesg |grep eth -n -A3 -B2 --color=auto

grep退出的状态

echo $?

# 0:表示成功
# 1:表示没有匹配到
# 2:表示参数中的文件不存在

六、应用场景

1:匹配行的上下文
ifconfig | grep -C 3 "Link encap" 
-A n  后n行,A记忆为(After)
-B n  前n行,B记忆为(Before)
-C n  前n行,后n行,C记忆为(Center)
 
2:用-c统计数目
grep -c "baidu.com" file.txt
3:根据文件内容查找目录
grep "declare"           当前目录下查找
grep -r "declare" 当前目录以及子目录下查找
grep -r -l "declare" 查找只显示文件名称,不具体显示的行
grep -R --exclude-dir="filename" baidu.com 除开某一个目录不匹配
4、过滤掉注释行
grep  ^[^#]  filename
5、过滤掉有空格的注释行
grep "^\s*[^# \t].*$" filename
6、在file2中找出包含file1字符串的字符串
file1:
ddf
ddc file2:
shinjldin
adcddf
ddf

grep -f file1 file2  

 
得到的结果:
adcddf
ddf
 
7、ps aux | grep init 与ps aux |grep [i]nit的区别
 
ps aux | grep init:

ps aux |grep [i]nit:
 
第一个init的时候她会把grep init也弄到进程里,所有可以匹配到init
第二个[i]nit的时候会把grep [i]nit 弄到进程里,但是[i]nit只能匹配init和nit,所有就只有一个
 
echo grep init |grep init
echo grep init |grep [i]nit
echo grep [i]nit |grep init
echo grep [i]nit |grep [i]nit

七、grep -E 与 grep 的区别

1、使用方法
grep -E “^[a-zA-Z0-9]” filename
grep "^[a-zA-Z0-9]" filename 如果不加E的话,会匹配出错

2、实例

下面两个写法都能达到同一个目的,使用-E与不使用-E的写法

cat a.txt |grep -oE 'id=[0-9]{9,10}'
cat a.txt |grep -o 'id=[0-9]\{9,10\}'

八、学习交流

欢迎大家关注我的公众号,一起交流、学习。

Linux常用命令 | grep的更多相关文章

  1. linux常用命令 grep命令

    linux grep命令 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配行打印出来 grep 全称 Grobal Regular Expression Pr ...

  2. linux常用命令的介绍

    本文主要介绍Linux常用命令工具,比如用户创建,删除,文件管理,常见的网络命令等 如何创建账号: 1. 创建用户 useradd -m username -m 表示会在/home 路径下添加创建用户 ...

  3. linux——常用命令与脚本

    linux常用命令 --文件管理pwd --查看当前目录cd --切换当前目录ls --列出当前目录下的所有文件touch --创建文件mkdir --建立目录rmdir --删除空目录rm --删除 ...

  4. DOS 和 Linux 常用命令的对比

    DOS 和 Linux 常用命令的对比 许多在 shell 提示下键入的 Linux命令都与你在 DOS 下键入的命令相似.事实上,某些命令完全相同. 本附录提供了 Windows的 DOS 提示下的 ...

  5. 第一章,Linux常用命令

    20161124 Linux常用命令1.find find /etc/ -size +50k -lsfind /etc/ -size +50k -ls 2> /dev/null查看目录下大于50 ...

  6. linux 常用命令大全

    linux 常用命令大全 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统 ...

  7. [工作需求]linux常用命令以及vim常用命令

    一.             Linux 常用命令 mkdir dirname新建文件夹 cd ~ 进入自己的家目录 cd dirname 进入名字为dirname的目录: l 显示当前文件夹下的文件 ...

  8. Linux常用命令整理 - imsoft.cnblogs

    su 用户名 在不退出登陆的情况下,切换到另外一个人的身份如果用户名缺省,则切换到root状态会提示输入密码,密码不回显的. 在用su命令切换root用户时,使用“-”选项,这样可以将root的环境变 ...

  9. linux 常用命令及技巧

    linux 常用命令及技巧 linux 常用命令及技巧:linux 常用命令总结: 一. 通用命令: 1. date :print or set the system date and time 2. ...

随机推荐

  1. jQuery笔记(三)

    day03 - jQuery 学习目标: 能够说出4种常见的注册事件 能够说出 on 绑定事件的优势 能够说出 jQuery 事件委派的优点以及方式 能够说出绑定事件与解绑事件 能够说出 jQuery ...

  2. Panda Global发现,FATF关于区块链金融又发声

    众所周知,FATF是一个由G7成员国在1989年在法国巴黎所成立的,具有国际反洗钱和反恐融资领域最具权威性的国际组织,全称叫金融行动特别工作组.2007年,中国而加入了该组织,迄今为止FATF成员已涵 ...

  3. Java并发编程的艺术(二)——volatile、原子性

    什么是volatile Java语言允许线程访问共享变量,为了确保共享变量能够被准确一致地更新,如果一个字段被声明为volatile,那么Java内存模型将会确保所有线程看到这个变量时值是一致的.保证 ...

  4. 没有部署ingress pod的woker节点telnet slb的80 443端口不通

    一,问题描述 没有部署ingress pod的woker节点telnet slb的80 443端口不通 二,解决办法 方法一:改用svc地址调用 方法二:让每台woker节点都部署ingress po ...

  5. js下 Day16、正则案例

    一.封装格式化日期 功能思路分析: \1. 第一个参数format表示指定的时间格式 \2. 第二个参数date为指定的时间(可以不传,默认当前时间) \3. 获取第二个参数中指定时间的年月日时分秒 ...

  6. vue第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件)

    第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件) #课程目标 掌握vue实例的相关属性和方法的含义和使用 了解vue的数据响应原理 熟悉创建组件,了解全局 ...

  7. [OI笔记]后缀自动机

    本来没打算写的,不过想想看后缀自动机的理论看了两三天了才有点懂(我太傻了)-下周期末考的话大概要去复习一下文化课感觉回来又要忘得差不多,还是开篇blog记一下好了. 相关的资料: cls当年的课件:2 ...

  8. Go实现ssh执行远端命令及远程终端

    什么是ssh? SSH是一种网络协议,用于计算机之间的加密登录. 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露. 互联 ...

  9. 简单学习 SQL and NOSql

    文章参考链接::https://www.cnblogs.com/xrq730/p/11039384.html 结构化数据.非结构化数据与半结构化数据 文章的开始,聊一下结构化数据.非结构化数据与半结构 ...

  10. [GXYCTF2019]禁止套娃(无参RCE)

    [GXYCTF2019]禁止套娃 1.扫描目录 扫描之后发现git泄漏 使用githack读取泄漏文件 <?php include "flag.php"; echo &quo ...