006 Linux 命令三剑客之-grep

006 Linux 命令三剑客之-grep

01 一起来认识 grep!

Linux 命令三剑客,sed、grep、awk。

  • sed:擅长数据修改。
  • grep:擅长数据查找定位。
  • awk:擅长数据切片,数据格式化,功能最复杂。
    grep 可以说是这三个命令中的红人,是我们日常使用频率最高的命令,下面和锅锅一起来搞定它。

02 grep 命令常用可选参数

  • -n # 显示行号。
  • -i # 不区分大小写。
  • -c # 统计匹配行,命中查找字符串的总行数。
  • -v # 显示不包含匹配文本的所有行。
  • -r # 递归处理。
  • -E # 使用正则表达式作为匹配进行查找(注:-e 没有-E 支持的完整)。
  • –include # 指定匹配的文件类型。
  • –exclude # 过滤不需要匹配的文件类型。
    使用示例:

  • grep -i “error” info.log

  • grep -in “error” info.log #不区分大小写,并显示行号。

03 grep 同时查找多个文件

  1. grep -in “key” info.log warn.log # 从文件info.log 和 warn.log 查找字符串”key”,不区分大小写,并显示行号。
  2. grep -n “key” * # 查询当前目录下所有文件中包含字符串”key”,并显示对应的行号。

04 grep 递归查找

前面已经总结过,-r/R参数,即 recursion,递归的意思。

  • grep -rn “key” * # 递归查询当前目录及其子目录所有文件中包含字符串”key”,并显示对应的行号。

05 grep 查找对应字符前后 n 行

  • grep -a10 “bug” info.log #查看”bug”字符后的10行,a->after。
  • grep -b10 “bug” info.log # 查看”bug”字符前的10行,b->before。
  • grep -c10 “bug” info.log # 查看”bug”字符前后各10行。

06 grep 常用组合命令示例

  • history|grep rm # 查找历史命令中执行了哪些删除命令。
  • cat *.log | grep ‘exception’ # 查找当前目录下所有log日志中的exception字符行。
  • ps -ef|grep java # 此命令为一般运维中最常用命令,查询linux进程中是否运行了此程序。
  • rpm -qa |grep yum # 查询linux下是否有安装过此rpm包。
  • grep -En ‘^2020’ info.log # 使用正则表达式查找,查找以 2020 开头的行,并显示其行号。
  • grep -rn “warn” * –include “*.log” # 递归查询当前目录及其子目录所有log类型文件中包含字符串”warn”,并显示对应的行号。
  • netstat -nap|grep -E “6651”|grep -E “203.130.41.24” # 多个条件过滤查找。
  • tail -1000f info.log | grep -E “aaa|bbb” # aaa 或 bbb 的条件都可以搜索到,这个命令实践中,滚动实时查看日志很常用。
  • tail -10000f info.log |grep ‘check’ >> call.log # 查找,并把符合规则的输出到对应文件中
  • grep -E ‘keyword1.*keyword2’ info.log # 多个关键字同时出现查找过滤
  • grep -E ‘^Error’ info.log |grep ‘failed’|awk -F ‘ ‘ ‘{print $10}’ # 查找以 Error 开头,过滤包含 failed 的行,并以空格分隔,输出第10个的内容

07 grep 相关的拓展命令

  • pgrep:查找正在运行的程序,pgrep 是 grep 的扩展功能,同样的还有 egrep、fgrep。
  • egrep:扩展正则表达式,相当于grep –E。
  • fgrep:不识别解析正则表达式,一般很少用。

08 小结

  • grep 命令,擅长查找字符串,正向查找,反向查找,正则查找,多文件查找,递归查找等。
  • grep 查找对应字符前后 n 行,对大日志检索关键字时比较有用。此外 grep 还可以配合其他命令一起大展身手!配合正则表达式,可以更加灵活的实现查找功能,正则表达式相关的内容前面的文章有一些总结。

「不甩锅的码农」原创,转载请注明来源,未经授权禁止商业用途!同名 GZH 请关注!

Original: https://www.cnblogs.com/bilahepan/p/15845049.html
Author: 不甩锅的码农
Title: 006 Linux 命令三剑客之-grep

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524136/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • K8S部署之VMWare网络拓扑踩坑

    知乎上最近发现一篇好文 图解K8S(01):基于Ubuntu 20.04部署1.23版K8S集群,想着之前 K8S 部署一直不成功,那么就照着这篇文章中说的试一试。结果在实验时遇到…

    Linux 2023年5月27日
    083
  • 等保测评2.0:Windows安全审计

    1、应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计 方案: 在管理工具打开本地安全策略,打开路径:安全设置\本地策略\审核策略,将全部审核策略配置为…

    Linux 2023年6月8日
    079
  • 笔记:linux 总结

    1.开始 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和…

    Linux 2023年6月14日
    0101
  • archLinux 配置用户

    archlinux 启动之后只有默认的root用户,首先介绍下系统启动到登录需要的步骤 1.系统通过systemd 以pid为1初始化系统,启动系统用户和系统必要的服务,(这一步目…

    Linux 2023年6月13日
    075
  • 【小记】QMake 项目获取 Windows 管理员权限

    QMAKE_LFLAGS += /MANIFESTUAC:"level=’requireAdministrator’uiAccess=’false’" 将以上那…

    Linux 2023年6月13日
    077
  • 0. 西门子 WinCC 组态软件 — 概述

    西门子 WinCC 组态软件 — 概述 1.西门子WinCC各产品线及定位 WinCC是由SIEMENS(西门子)公司开发的SCADA(数据采集与监控)系统,能高效控制…

    Linux 2023年6月7日
    081
  • Docker清理日志脚本

    Docker清理日志脚本 #!/bin/sh 此脚本为日常清理docker日志 docker 容器的路劲日志为 /var/lib/docker/containers/ 下-json…

    Linux 2023年6月8日
    083
  • python爬虫_入门_翻页

    写出来的爬虫,肯定不能只在一个页面爬,只要要爬几个页面,甚至一个网站,这时候就需要用到翻页了 其实翻页很简单,还是这个页面http://bbs.fengniao.com/forum…

    Linux 2023年6月6日
    067
  • QT获取linux下的当前用户名

    故事背景:客户端启动的时候需要加载机器/home/xx/test.jpg的图片作为背景图,但是有的机器用户名叫AAA,有的机器名叫BBB,所以我需要获取当前用户的home目录 技术…

    Linux 2023年6月13日
    093
  • Docker安装及配置镜像加速

    Docker 支持 Mac Windows Linux 的三种安装 1、系统要求 官网提示如果要安装 Docker Engine, 需要一个CentOS 7 以及以上的稳定版本。 …

    Linux 2023年5月27日
    0100
  • Redis集群原理及搭建(Twemproxy、Predixy代理搭建、Redis Cluster集群)

    1 引言 网上很多文章会把集群和主从复制混为一谈,其实这两者是存在本质差异的,各自解决的问题不同。Redis在单机/单节点/单实例存在的风险: 单点故障、 容量有限、 并发压力问题…

    Linux 2023年6月13日
    088
  • Java 8 中的 Stream 遍历树形结构

    树形结构数据处理 public class TreeDemo { public static void main(String[] args) { testtree(); } pu…

    Linux 2023年6月7日
    0106
  • python_变量

    字符串 1.字符串方法修改大小写 mes = ‘hi, im testing string operation’ print(mes) print(mes.title()) pri…

    Linux 2023年6月7日
    077
  • Spring Boot 项目启动错误 提示 java.lang.ClassNotFoundException org.apache.log4j.Logger

    问题描述 spring boot项目升级到2.x,启动时出现错误提示:java.lang.ClassNotFoundException: org.apache.log4j.Logg…

    Linux 2023年6月14日
    085
  • Visual studio prebuild/postbuild 设置条件不生效

    这两天有一个需求就是,在编译完成后,对生成的dll进行混淆加密处理,并且自动上传到nuget。混淆加密和自动上传已经写成了cmd命令,但是又不想在Debug模式下调用这个命令,毕竟…

    Linux 2023年6月13日
    080
  • linux用户身份与文件权限

    tips:可以将安装好的系统设置为一次快照,这样即便系统彻底崩溃了,也可以在5秒的时间内快速还原出一台全新的系统,而不用担心数据丢失 1、用户身份和能力 Linux系统的管理员之所…

    Linux 2023年5月27日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球