在 Linux 系统中过滤文件中的字符串

在 Linux 系统中过滤文件中的字符串,可以使用多种命令行工具实现。以下是几种常见方法及详细说明:


一、使用 grep 命令(最常用)

grep 是 Linux 中最强大的文本搜索工具,支持正则表达式。

基础语法:
grep [选项] "要搜索的字符串" 文件名
常用选项:
  • -i:忽略大小写(grep -i "error" log.txt
  • -v:反向匹配(显示不包含字符串的行)
  • -n:显示匹配行的行号
  • -r:递归搜索目录下的所有文件
  • -w:精确匹配整个单词(避免部分匹配)
  • -c:统计匹配的行数
示例:
  1. 简单匹配

    grep "error" /var/log/syslog
    

    输出所有包含 error 的行。

  2. 忽略大小写

    grep -i "warning" app.log
    

    匹配 warningWARNINGWarning 等。

  3. 显示行号

    grep -n "404" access.log
    

    输出格式:行号:匹配内容

  4. 反向匹配

    grep -v "debug" server.log
    

    输出所有不包含 debug 的行。

  5. 统计匹配次数

    grep -c "failed" auth.log
    

二、使用 awk 命令(复杂文本处理)

awk 适合按列处理文本,支持更复杂的逻辑。

基础语法:
awk '/模式/ {动作}' 文件名
示例:
  1. 按列过滤(假设字段以空格分隔):

    awk '$3 > 1000' data.txt  # 输出第三列大于1000的行
    
  2. 多条件匹配

    awk '/error/ && /network/' app.log
    

    同时包含 errornetwork 的行。

  3. 自定义输出

    awk '/error/ {print "Line " NR ": " $0}' app.log
    

    输出匹配行时添加自定义前缀。


三、使用 sed 命令(流编辑器)

sed 主要用于文本替换,但也可用于过滤。

示例:
  1. 打印匹配行

    sed -n '/error/p' app.log
    

    -n 表示不自动打印所有行,p 表示打印匹配行。

  2. 删除匹配行

    sed '/error/d' app.log
    

    删除所有包含 error 的行(仅输出到终端,不修改原文件)。


四、组合工具(高级用法)

1. 结合 grepawk
grep "error" app.log | awk '{print $1, $2}'

先过滤出包含 error 的行,再提取前两列。

2. 使用正则表达式:
grep -E "error|warning" app.log  # 匹配 error 或 warning
grep "^[0-9]{4}-" dates.txt      # 匹配以四位数字-开头的行(如 2025-05-13)

五、注意事项

  1. 特殊字符转义
    如果搜索内容包含正则表达式特殊字符(如 ., *, [ ]),需用反斜杠转义:

    grep "192\.168\.1\.1" network.log
    
  2. 性能优化

    • 对大文件使用 grep -F 禁用正则表达式,加速搜索。
    • 使用 --color=auto 高亮匹配内容:
      grep --color=auto "error" app.log
      

六、实战案例

场景:从 Nginx 日志中提取所有 404 错误请求。

grep " 404 " /var/log/nginx/access.log | awk '{print $1, $7}'

输出格式:客户端IP 请求的URL


根据需求选择合适的工具,简单场景用 grep,复杂逻辑用 awk

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于PXIE 总线架构的Kintex UltraScale 系列FPGA 高性能数据预处理板卡

基于PXIE 总线架构的Kintex UltraScale 系列FPGA 高性能数据预处理板卡 一款基于3U PXIE 总线架构的高性能数据预处理FMC 载板,板卡具有1 个FMC(HPC)接口,1 个X8 GTH 背板互联接口,可以实现1 路PCIe x8。板卡采用Xili…

Java 使用 PDFBox 提取 PDF 文本并统计关键词出现次数(附Demo)

目录 前言1. 基本知识2. 在线URL2.1 英文2.2 混合 3. 实战 前言 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD…

Vue百日学习计划Day16-18天详细计划-Gemini版

重要提示: 番茄时钟: 每个番茄钟为25分钟学习,之后休息5分钟。每完成4个番茄钟,进行一次15-30分钟的长休息。动手实践: DOM 操作和事件处理的理解高度依赖于实际编码。请务必在浏览器中创建 HTML 页面,并配…

SearchClassUtil

路径扫描工具SearchClassUtil,用于扫描指定包(XXXX)下的所有.class文件,并将它们的全限定类名(如tomcat.SearchClassUtil)收集到列表中返回。该工具使用递归文件遍历和反射机制,是实现 Spring 框…

云服务器的运用自如

云服务器的运用自如:从基础到高阶的实战指南(2025版) 云服务器作为数字化转型的核心工具,其灵活性和高效性已覆盖从个人开发者到企业级应用的广泛场景。以下是基于当前技术趋势的云服务器深度运用策略,涵盖核心应用、…

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-docker MCP解析

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-docker MCP解析 这里面有很重要的原因其中一个很其中一个原因是因为如果你使用docker的方式,你可以在虚拟环境下就类似于这个沙箱的这个机制可以进行隔离。这对于安全,…

快慢指针算法(Floyd 判圈算法)

快慢指针(又称龟兔赛跑算法)是一种常用的链表操作技巧,通过两个移动速度不同的指针遍历链表,用于解决链表中环检测、中点查找等问题。以下是其核心应用场景和实现方法: 1. 链表环检测 问题描述: 判断链表中…

独立开发者利用AI工具快速制作产品MVP

在当今快速发展的科技时代,独立开发者面临着前所未有的机遇与挑战。曾经需要花费数天甚至数周才能完成的产品MVP(Minimum Viable Product,最小可行性产品),如今借助强大的AI工具,可以在短短1小时内实现。 …

Spark处理过程-转换算子和行动算子

(一)RDD的处理过程 RDD经过一系列的“转换”操作,每一次转换都会产生不同的RDD,以供给下一次“转换”操作使 用,直到最后一个RDD经过“行动”操作才会真正被计算处理。 1.延迟。RDD中所有的转换都是延迟的&…

设置环境变量启动jar报

1. 环境变量设置 set PATHC:\Program Files\java17\jdk-17.0.9\bin;%PATH%2. 启动jar java -jar jar包名3. 记录原因 PATH路径前添加java执行文件路径才会管用。添加后可以试试以下命令 直接输入PATH 回车 PATH进行java版本测试 java -version

589. N叉树的前序遍历迭代法:null指针与栈的巧妙配合

一、题目描述 给定一个N叉树的根节点,返回其节点值的前序遍历结果。前序遍历的定义是:先访问根节点,再依次遍历每个子节点(从左到右)。例如,对于如下N叉树: 1/ | \3 2 4 / \ 5 6前序遍历结果…

显性知识的主要特征

有4个主要特征: 客观存在性静态存在性可共享性认知元能性

奥运数据可视化:探索数据讲述奥运故事

在数据可视化的世界里,体育数据因其丰富的历史和文化意义,常常成为最有吸引力的主题之一。今天我要分享一个令人着迷的奥运数据可视化项目,它巧妙地利用交互式图表和动态动画,展现了自1896年至今奥运会的发展历程和各国奥运成就的…

Mysql存储过程(附案例)

​ 文章目录 存储过程概述1、基本语法2、变量①、系统变量②、用户自定义变量③、局部变量 3、流程控制语句①、if语句②、参数③、case语句④、while语句⑤、repeat语句⑥、loop语句⑦、cursor游标⑧、handler 4、存储函数 存储过程概述 存储过程是事先经过编译并存储在数据…

小波变换+注意力机制成为nature收割机

小波变换作为一种新兴的信号分析工具,能够高效地提取信号的局部特征,为复杂数据的处理提供了有力支持。然而,它在捕捉数据中最为关键的部分时仍存在局限性。为了弥补这一不足,我们引入了注意力机制,借助其能够强化关注…

SQLMesh 增量模型从入门到精通:5步实现高效数据处理

本文深入解析 SQLMesh 中的增量时间范围模型,介绍其核心原理、配置方法及高级特性。通过实际案例说明如何利用该模型提升数据加载效率,降低计算资源消耗,并提供配置示例与最佳实践建议,帮助读者在实际项目中有效应用这一强大功能。…

Android应用内存分析与优化 - 工具篇之Booster

序 在原理篇中,我们发现在App内存的分布中,Code是占大头的部分,所以我们可以从App体积方面想办法,通过减小App体积达到降低内存的目的,同时,根据权威的机构分析,体积与用户下载和留存有很大的联…

金属加工液展|切削液展|2025上海金属加工液展览会

2025上海金属加工液展览会 时间:2025年12月2-4日 地点:上海新国际博览中心 2025上海金属加工液展规划30000平方米展览规模,预设展位1200个,将为国内外加工液产业提供一个集“展示、合作、交易、发展”于一体的综合性平台&#…

React学习———Redux 、 React Redux和react-persist

Redux Redux是一个流行的JavaScript状态管理库,通常用于React等前端框架结合使用。Redux 的设计思想是让应用的状态变得可预测、可追踪、易于调试和测试。 Redux的核心l理念 单一数据源:整个应用的状态被存储在一个唯一的Store对象中,所有…

Python字符串常用方法详解

文章目录 Python字符串常用方法详解一、字符串大小写转换方法(常用)1. 基础大小写转换2. 案例:验证码检查(不区分大小写) 二、字符串查找与替换方法1. 查找相关方法2. 替换相关方法 三、字符串判断方法1. 内容判断方法 四、字符串分割与连接方…