当前位置: 首页 > news >正文

文本过滤工具:grep

什么是grep

grep是一个命令行文本搜索工具,它的名称来源于"Global Regular Expression Print"(全局正则表达式打印)。它的主要功能是在文本文件中查找特定模式或字符串,并将匹配的行打印到终端或输出到文件。

基本用法

首先,让我们从grep命令的基本用法开始。

1. 搜索关键字

要在文件中搜索一个关键字,只需运行以下命令:

grep "keyword" filename

这将在filename文件中查找并显示包含"keyword"的所有行。

2. 区分大小写

默认情况下,grep是区分大小写的。如果要执行大小写不敏感的搜索,可以使用-i选项:

grep -i "keyword" filename

这将匹配"keyword"、“Keyword”、"KEYWORD"等。

3. 显示行号

有时候,你可能需要知道匹配行在文件中的行号。可以使用-n选项来显示行号:

grep -n "keyword" filename

这将在匹配行的前面显示行号。

4. 反向匹配

如果你想查找不包含关键字的行,可以使用-v选项:

grep -v "keyword" filename

这将显示不包含"keyword"的所有行。

5. 正则表达式

grep还支持正则表达式,这使得它非常强大。例如,要查找以数字开头的行,可以使用正则表达式:

grep "^[0-9]" filename

这将匹配以0到9之间的数字开头的行。

示例

现在,让我们探讨一些更高级的grep示例,这些示例将展示grep的真正威力。

1. 递归搜索

要在目录及其子目录中递归搜索,可以使用-r选项:

grep -r "keyword" directory/

这将搜索directory/下的所有文件,并显示包含"keyword"的行。

2. 按文件类型搜索

如果你只想在特定类型的文件中搜索,可以使用findgrep的组合。例如,要在所有的.txt文件中搜索关键字:

find . -type f -name "*.txt" -exec grep "keyword" {} \;

这将在当前目录及其子目录中查找所有.txt文件中包含"keyword"的行。

3. 统计匹配数量

要统计匹配行的数量而不显示匹配的内容,可以使用-c选项:

grep -c "keyword" filename

这将返回匹配"keyword"的行数。

4. 多个关键字

你可以使用正则表达式的"或"操作符|来搜索多个关键字。例如,要查找包含"apple"或"banana"的行:

grep "apple\|banana" filename

这将匹配包含任何一个关键字的行。

5. 输出匹配上下文

有时,查看匹配行的上下文很有帮助。可以使用-A-B选项来显示匹配行前后的内容。例如,要显示匹配行前后的2行:

grep -A 2 -B 2 "keyword" filename

这将显示匹配行前后各2行的内容。

日常使用

当涉及到Linux运维常见操作时,grep是一个不可或缺的工具,用于搜索、分析和筛选系统日志、配置文件和进程信息等。

1. 查找特定进程

使用ps命令列出当前正在运行的进程,然后使用grep来查找特定进程。例如,查找名为"nginx"的进程:

ps aux | grep nginx

这将显示包含"nginx"关键字的所有进程信息。

2. 搜索日志文件

查找日志文件中的特定错误或关键字,例如,查找Apache的访问日志中包含"404"的行:

grep "404" /var/log/apache2/access.log

这将显示包含"404"的所有访问日志行。

3. 统计日志中的错误

要统计日志文件中特定关键字的出现次数,可以使用grep结合wc命令。例如,统计错误日志文件中包含"error"的行数:

grep -c "error" /var/log/error.log

这将返回包含"error"的行数。

4. 搜索配置文件

查找特定配置文件中的配置项,例如,查找nginx配置文件中的虚拟主机配置:

grep -A 5 -B 5 "server {" /etc/nginx/nginx.conf

这将显示包含"server {"的行,并显示前后5行的内容。

5. 查找IP地址

从文本文件中提取IP地址,例如,从一个日志文件中提取所有不同的IP地址:

grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" access.log | sort -u

这将提取日志中的IP地址并显示不重复的地址列表。

6. 搜索正在监听的端口

查找系统上正在监听的端口,例如,查找所有监听在TCP端口80的进程:

netstat -tuln | grep ":80"

这将显示监听在TCP端口80的所有进程。

7. 检查服务状态

使用systemctl命令检查服务状态时,可以结合grep来查找特定服务的状态。例如,查找Apache服务的状态:

systemctl status apache2 | grep "Active"

这将显示Apache服务的活动状态信息。

8. 搜索压缩文件内容

在压缩文件中搜索内容,例如,从一个gzip压缩的日志文件中查找关键字:

zcat access.log.gz | grep "keyword"

这将解压缩日志文件并查找关键字。

相关文章:

文本过滤工具:grep

什么是grep? grep是一个命令行文本搜索工具,它的名称来源于"Global Regular Expression Print"(全局正则表达式打印)。它的主要功能是在文本文件中查找特定模式或字符串,并将匹配的行打印到终端或输出到文件…...

【Linux】生产者和消费者模型

生产者和消费者概念基于BlockingQueue的生产者消费者模型全部代码 生产者和消费者概念 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。 生产者和消费者彼此之间不直接通讯,而通过这个容器来通讯,所以生产者生产完数据之后不用等待…...

开发APP的费用是多少

开发一款APP的费用可以因多种因素而异,包括项目的规模、功能、复杂性、技术选择、地理位置等。北京是中国的大城市,APP开发的费用也会受到北京的物价水平和市场竞争的影响。以下是一些可以影响APP开发费用的因素,希望对大家有所帮助。北京木奇…...

start()方法源码分析

当我们创建好一个线程之后,可以调用.start()方法进行启动,start()方法的内部其实是调用本地的start0()方法, 其实Thread.java这个类中的方法在底层的Thread.c文件中都是一一对应的,在Thread.c中start0方法的底层调用了jvm.cpp文件…...

VUE_history模式下页面404错误

uniapp 的history 把#去掉了&#xff0c;但是当刷新页面的时候出现404错误 解决方案&#xff1a;需要服务端支持 如果 URL 匹配不到任何静态资源&#xff0c;则应该返回同一个 index.html 页面 Apache <IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRu…...

现代数据架构-湖仓一体

当前的数据架构已经从数据库、数据仓库&#xff0c;发展到了数据湖、湖仓一体架构&#xff0c;本篇文章从头梳理了一下数据行业发展的脉络。 上世纪&#xff0c;最早出现了关系型数据库&#xff0c;也就是DBMS&#xff0c;有商业的Oracle、 IBM的DB2、Sybase、Informix、 微软…...

最新AI写作系统ChatGPT源码/支持GPT4.0+GPT联网提问/支持ai绘画Midjourney+Prompt应用+MJ以图生图+思维导图生成

一、智能创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&…...

Python机器学习实战-特征重要性分析方法(5):递归特征消除(附源码和实现效果)

实现功能 递归地删除特征并查看它如何影响模型性能。删除时会导致更大下降的特征更重要。 实现代码 from sklearn.ensemble import RandomForestClassifier from sklearn.feature_selection import RFE import pandas as pd from sklearn.datasets import load_breast_cance…...

如何快速走出网站沙盒期(关于优化百度SEO提升排名)

网站沙盒期是指新建立的网站在百度搜索引擎中无法获得好的排名&#xff0c;甚至被完全忽略的现象。这个现象往往发生在新建立的网站上&#xff0c;因为百度需要时间来评估网站的质量和内容。蘑菇号www.mooogu.cn 为了快速走出网站沙盒期&#xff0c;需要优化百度SEO。以下是5个…...

ATA-8000系列射频功率放大器——应用场景介绍

ATA-8000系列是一款射频功率放大器。其P1dB输出功率500W&#xff0c;饱和输出功率最大1000W。增益数控可调&#xff0c;一键保存设置&#xff0c;提供了方便简洁的操作选择&#xff0c;可与主流的信号发生器配套使用&#xff0c;实现射频信号的放大。 图&#xff1a;ATA-8000系…...

2009-2018年各省涉农贷款数据(wind)

2009-2018年各省涉农贷款数据&#xff08;wind&#xff09; 1、时间&#xff1a;:209-2018年 2、范围&#xff1a;31省 3、来源&#xff1a;wind 4、指标&#xff1a;涉农贷款 指标解释 &#xff1a;在涉农贷款的分类上&#xff0c;按照城乡地域将涉农贷款分为农村贷款和城…...

window.print()打印及出现的问题

<template><transition name"el-zoom-in-center"><div class"JNPF-preview-main"><div class"JNPF-common-page-header"><el-page-header back"goBack" :content"打印通知书" /><div clas…...

Fedora Linux 39 Beta 预估 10 月底发布正式版

Fedora 39 Beta 镜像于今天发布&#xff0c;用户可以根据自己的使用偏好&#xff0c;下载 KDE Plasma&#xff0c;Xfce 和 Cinnamon 等不同桌面环境版本&#xff0c;正式版预估将于 10 月底发布 Fedora 39 Beta 版本主要更新了 DNF 软件包管理器&#xff0c;并优化了 Anaconda …...

【zookeeper】基于Linux环境安装zookeeper集群

前提&#xff0c;需要有几台linux机器&#xff0c;我们可以准备好诸如finalshell来连接linux并且上传文件&#xff1b; 其次Linux需要安装上ssh&#xff0c;并且在/etc/hosts文件中写好其他几台机器的名字和Ip 127.0.0.1 localhost localhost.localdomain localhost4 localh…...

什么是IoT数字孪生?

数字孪生是资产或系统的实时虚拟模型&#xff0c;它使用来自连接的物联网传感器的数据来创建数字表示。数字孪生允许您从任何地方实时监控设备、资产或流程。数字孪生用于多种目的&#xff0c;例如分析性能、监控问题或在实施之前运行测试。从物联网数字孪生中获得的见解使用户…...

俄罗斯四大平台速卖通、Joom、Ozon 和 UMKA中国卖家如何脱颖而出!

随着全球化的不断推进&#xff0c;越来越多的中国卖家将目光投向了俄罗斯这个广阔的市场。在众多的跨境电商平台中&#xff0c;速卖通、Joom、Ozon 和 UMKA 无疑是最受关注的四个平台。本文将从卖家的角度&#xff0c;详细分析这四大平台的特点和优势&#xff0c;帮助找到最…...

destoon 调用第三方api接口

调用企查查企业工商信息接口为例&#xff1a; 在 \api\extend.func.php 文件下 注意&#xff1a;有注释内容可能接口无法访问 function select_list($k){$query_data array(key>,keyword>$k);$url "https://api.qichacha.com/ECIV4/GetBasicDetailsByName?&q…...

js中的类型转换

原文地址 JavaScript 中有两种类型转换&#xff1a;隐式类型转换&#xff08;强制类型转换&#xff09;和显式类型转换。类型转换是将一个数据类型的值转换为另一个数据类型的值的过程。 隐式类型转换&#xff08;强制类型转换&#xff09;&#xff1a; 隐式类型转换是 Java…...

Oracle物化视图(Materialized View)

与Oracle普通视图仅存储查询定义不同&#xff0c;物化视图&#xff08;Materialized View&#xff09;会将查询结果"物化"并保存下来&#xff0c;这意味着物化视图会消耗存储空间&#xff0c;物化的数据需要一定的刷新策略才能和基表同步&#xff0c;在使用和管理上比…...

Spring 学习(九)整合 Mybatis

1. 整合 Mybatis 步骤 导入相关 jar 包 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency>…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...

以太网PHY布局布线指南

1. 简介 对于以太网布局布线遵循以下准则很重要&#xff0c;因为这将有助于减少信号发射&#xff0c;最大程度地减少噪声&#xff0c;确保器件作用&#xff0c;最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确&#xff0c;然…...

开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例

在工业自动化控制系统中&#xff0c;常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中&#xff0c;客户现场采用了 罗克韦尔PLC&#xff0c;但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控&#xff0c;引入了开疆智能Etherne…...