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

sed文本处理实战:从基础语法到高阶场景解析

1. 为什么你需要掌握sed第一次接触sed时我也觉得这个命令行工具看起来晦涩难懂。直到有次需要处理一个500MB的日志文件用文本编辑器直接打开卡死用Excel根本加载不了这时候sed只用一行命令就搞定了数据清洗我才真正体会到它的威力。sed全称Stream EDitor流编辑器是Unix/Linux系统自带的文本处理神器。它最大的特点是逐行处理数据流不会一次性加载整个文件所以处理大文件时内存占用极低。我处理过2GB的CSV文件sed依然游刃有余这是GUI编辑器根本无法比拟的。在实际工作中这些场景你一定会用到sed批量修改服务器配置文件中的IP地址从杂乱日志中提取关键错误信息快速清理CSV文件中的异常格式自动化脚本中的文本预处理2. 基础语法从hello world开始2.1 基本命令结构sed命令的标准格式就像下面这样sed [选项] 操作指令 文件名最简单的例子我们要把文本中的world替换为sedecho hello world | sed s/world/sed/ # 输出hello sed这里用到了s替换命令它的完整格式是s/旧内容/新内容/。记住这个模式它能解决你80%的文本替换需求。2.2 必须掌握的四个选项刚开始用sed时我建议先掌握这四个最常用的选项-n静默模式只输出处理过的行。配合p命令可以精确控制输出内容seq 1 5 | sed -n 3p # 只输出第三行-i直接修改文件内容慎用。不加这个选项时sed只是输出处理结果不会改原文件sed -i s/old/new/g file.txt # 真正修改文件-e执行多条命令。比如先删除空行再替换内容sed -e /^$/d -e s/foo/bar/ file.txt-r使用扩展正则表达式。写复杂匹配规则时会方便很多echo abc123 | sed -r s/[a-z]// # 输出1233. 定位技巧精确到行和字符3.1 行号定位处理日志文件时经常需要针对特定行操作。sed支持多种定位方式sed 5d file.txt # 删除第5行 sed 3,7s/old/new/ # 只修改3到7行 sed $d file.txt # 删除最后一行$表示末尾 sed 2~3d access.log # 从第2行开始每隔3行删除一行适合采样3.2 正则定位更灵活的方式是用正则表达式定位sed /error/d app.log # 删除所有含error的行 sed /^#/d config.conf # 删除所有注释行以#开头 sed /start/,/end/d # 删除从含start到含end的所有行我曾经用这个特性快速清理过nginx配置sed -i /^$/d;/#.*$/d nginx.conf # 删除空行和注释4. 高阶替换技巧4.1 分组捕获与引用这是sed最强大的功能之一。假设我们要把2023-01-15格式转为01/15/2023echo 2023-01-15 | sed -r s/([0-9]{4})-([0-9]{2})-([0-9]{2})/\2\/\3\/\1/解释()捕获分组\1引用第一个分组-r启用扩展正则支持{}等元字符4.2 特殊替换技巧大小写转换echo Hello World | sed s/\(.*\)/\L\1/ # 转小写 echo hello world | sed s/\(.*\)/\U\1/ # 转大写保留匹配部分echo price: $99 | sed s/price: \(\$[0-9]*\)/\1/ # 输出$99非贪婪匹配需要Perl模式echo foo bar baz | sed -E s/(.*?)bar/\1BAR/ # 替换第一个bar5. 实战案例解析5.1 日志清洗实战假设有个web日志片段127.0.0.1 - - [10/Oct/2023:13:55:36] GET /api/user HTTP/1.1 200 432 127.0.0.1 - - [10/Oct/2023:13:55:37] POST /api/login HTTP/1.1 200 342我们需要提取时间、方法和路径cat access.log | sed -E s/.*\[(.*)\].*(GET|POST) (\/[^ ]*).*/\1 \2 \3/5.2 批量修改配置有100台服务器的配置文件需要更新Redis地址sed -i s/redis_host: .*/redis_host: 10.0.0.123/ /etc/app/*.conf5.3 CSV格式转换原始数据name,age,gender John,25,M Lisa,30,F转为Markdown表格sed 1s/^/| /;1s/,/ | /g;1s/$/ |/;2,$s/^/| /;2,$s/,/ | /g;2,$s/$/ |/ data.csv6. 高级技巧与性能优化6.1 多命令组合用{}组合多个操作比如删除空行并转换大小写sed /^$/{d; s/.*/\L/} file.txt6.2 保持空间操作sed有两个缓冲区模式空间当前处理的行保持空间临时存储区用h/H/g/G可以在两者间交换数据。比如实现行号标记sed file.txt | sed N;s/\n/ / # 给每行添加行号6.3 处理大文件技巧禁用缓冲GNU sed特有sed -u s/foo/bar/ huge.log只处理匹配到的行sed /pattern/!d bigfile.txt output.txt配合split分块处理split -l 1000000 bigfile.txt chunk_ for f in chunk_*; do sed -i s/old/new/ $f; done7. 常见坑与解决方案MacOS与Linux的sed差异Mac的sed需要加和-E替代-r# Linux sed -i s/foo/bar/ file # Mac sed -i -E s/foo/bar/ file特殊字符转义echo /path/to/file | sed s/\//\\\//g # 转义斜杠贪婪匹配问题echo foo bar baz | sed s/foo.*baz/FOO BAR BAZ/ # 整行替换性能陷阱避免在循环中反复调用sed复杂操作尽量用单个sed命令完成8. 与其他工具配合8.1 sedawk黄金组合提取nginx日志中的异常状态码awk $9400 {print} access.log | sed -E s/.*\[(.*)\].*/\1/8.2 sedgrep管道处理统计错误出现次数grep -i error app.log | sed s/.*\(ERROR [a-z]*\).*/\1/ | sort | uniq -c8.3 在Shell脚本中的应用自动化部署脚本示例#!/bin/bash OLD_IP192.168.1.100 NEW_IP$(curl -s ifconfig.me) sed -i s/$OLD_IP/$NEW_IP/g /etc/nginx/conf.d/*.conf systemctl reload nginx掌握sed后你会发现很多原本需要写Python脚本处理的任务用几行sed命令就能搞定。刚开始可能需要查手册但经过20-30次实践后这些命令就会变成你的肌肉记忆。建议保存这篇文章的代码片段遇到实际问题时直接拿来修改使用。

相关文章:

sed文本处理实战:从基础语法到高阶场景解析

1. 为什么你需要掌握sed? 第一次接触sed时,我也觉得这个命令行工具看起来晦涩难懂。直到有次需要处理一个500MB的日志文件,用文本编辑器直接打开卡死,用Excel根本加载不了,这时候sed只用一行命令就搞定了数据清洗&…...

Webots 机器人仿真平台(一) 从零到一:跨平台安装全攻略

1. Webots机器人仿真平台初探 第一次接触机器人仿真时,我和大多数新手一样茫然。市面上有Gazebo这样知名的仿真工具,但配置复杂得让人望而生畏。直到发现了Webots,这个开源的3D机器人仿真平台,才真正找到了适合初学者的入门利器。…...

别再乱配了!SpringBoot配置文件加载顺序的实战避坑指南(附优先级图解)

SpringBoot配置加载优先级深度解析:从原理到实战避坑 SpringBoot的配置加载机制看似简单,实则暗藏玄机。许多开发者在使用过程中都曾遇到过配置不生效、覆盖关系混乱的问题,尤其是在多环境部署或使用外部配置时。本文将深入剖析SpringBoot配置…...

ROS Melodic下,用Gazebo+ros_control搞定移动底盘+三轴机械臂的联合仿真(附避坑记录)

ROS Melodic下移动底盘与三轴机械臂的Gazebo联合仿真实战指南 当移动底盘遇上机械臂,问题总是比想象中多。上周深夜调试时,我的机械臂突然在Gazebo里表演起了"陀螺旋转",而底盘却纹丝不动——这恰恰是ros_control配置中一个PID参数…...

如何利用本地自动化工具提升英雄联盟游戏体验:3个核心功能详解

如何利用本地自动化工具提升英雄联盟游戏体验:3个核心功能详解 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在英雄联盟的激烈对…...

基于Athena-Public框架的LLM全栈应用开发实践与架构解析

1. 项目概述与核心价值 最近在梳理一些开源项目时,发现了一个名为“Athena-Public”的仓库,作者是winstonkoh87。这个项目名听起来就很有意思,Athena(雅典娜)是智慧女神,一个公开的“智慧”项目&#xff0c…...

联想IdeaPad 310S老本升级记:手把手教你加内存、换固态、装Win10+Ubuntu双系统

联想IdeaPad 310S性能重生指南:从硬件升级到双系统实战 每次打开这台2016年购入的联想IdeaPad 310S,风扇的嘶吼和系统卡顿都让人抓狂。作为一款定位入门级的笔记本,它搭载的i3-6006U处理器和4GB内存早已跟不上现代应用的需求。但直接换新机又…...

程序员裸辞转行网络安全,我只用了 90 天

程序员如何90天成功转行黑客(网络安全)? 有人说:”黑客到底比程序员高在哪,为什么很多人开始转行了“其实黑客都是程序员,但是并不是所有的程序员都是黑客. 从企业和社会需求来看,现在真不缺程…...

告别手动开关!用ESP8266+Arduino实现高精度定时(误差<1秒)的智能插座方案

告别手动开关&#xff01;用ESP8266Arduino实现高精度定时&#xff08;误差<1秒&#xff09;的智能插座方案 在智能家居和物联网项目中&#xff0c;定时控制是最基础却最常被忽视的功能之一。许多开发者都遇到过这样的尴尬&#xff1a;用手机App远程控制电器很方便&#xff…...

Cursor编辑器集成Claude 3:AI双模型编程实战与成本优化指南

1. 项目概述&#xff1a;当AI代码助手遇上你的IDE 最近在开发者圈子里&#xff0c;一个名为“Cursor-Claude-Extension”的开源项目热度持续攀升。简单来说&#xff0c;它是一款为Cursor编辑器设计的扩展插件&#xff0c;核心功能是将Anthropic公司强大的Claude系列模型&#x…...

用STM32F103C8点亮你的第一块LED点阵屏:HUB08接口F3.75单元板保姆级驱动教程

从零玩转STM32驱动LED点阵屏&#xff1a;HUB08接口实战指南 第一次拿到LED点阵屏时&#xff0c;看着密密麻麻的引脚和陌生的HUB08接口&#xff0c;确实容易让人望而生畏。但别担心&#xff0c;本文将带你用最常见的STM32F103C8T6开发板&#xff0c;一步步点亮这块32x64双色点阵…...

别再只会用save了!Matlab fwrite函数实战:手把手教你高效读写二进制文件(附完整代码)

Matlab二进制文件高效读写指南&#xff1a;fwrite函数深度解析与实战 在数据处理领域&#xff0c;二进制文件因其紧凑性和高效性而备受青睐。对于Matlab用户而言&#xff0c;虽然save函数简单易用&#xff0c;但在处理大规模数据或需要跨平台交换时&#xff0c;fwrite函数才是…...

别再乱调了!AUTOSAR DEM中Debounce参数(步长、阈值)的实战配置指南与避坑

AUTOSAR DEM中Debounce参数实战&#xff1a;从电压过压到通讯超时的精准调优 在汽车电子系统的故障诊断中&#xff0c;误报和漏报就像一对难以调和的矛盾体。我曾见过一个项目因为电压过压检测过于敏感&#xff0c;导致车辆在颠簸路面频繁误报故障&#xff1b;也遇到过通讯超时…...

ElevenLabs企业客户成功路径图:从POC验证到年度千万级合同签署的5个不可跳过的合规锚点

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs企业客户成功路径图&#xff1a;从POC验证到年度千万级合同签署的5个不可跳过的合规锚点 企业在采用ElevenLabs语音合成平台构建AI客服、无障碍内容生成或本地化语音交付系统时&#xff0c;技…...

AI模型产权保护进入倒计时(仅剩11个月):2026奇点大会强制TEE接入新规解读,3类企业必须在Q3前完成可信推理栈升级

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生可信执行环境&#xff1a;2026奇点智能技术大会TEE for AI 在2026奇点智能技术大会上&#xff0c;TEE for AI&#xff08;AI-Native Trusted Execution Environment&#xff09;正式成为下一代A…...

为什么你的KFServing比别人慢3.8倍?:SITS 2026现场调试实录——AI原生编排中被忽略的4个cgroup v2陷阱

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么你的KFServing比别人慢3.8倍&#xff1f;&#xff1a;SITS 2026现场调试实录——AI原生编排中被忽略的4个cgroup v2陷阱 在 SITS 2026 现场压测中&#xff0c;同一 KFServing v0.11.2 集群部署相…...

终极低光照图像数据集ExDark:从实战应用到最新研究进展

终极低光照图像数据集ExDark&#xff1a;从实战应用到最新研究进展 【免费下载链接】Exclusively-Dark-Image-Dataset Exclusively Dark (ExDARK) dataset which to the best of our knowledge, is the largest collection of low-light images taken in very low-light enviro…...

Inter字体性能优化终极指南:如何让你的网页加载速度提升70% [特殊字符]

Inter字体性能优化终极指南&#xff1a;如何让你的网页加载速度提升70% &#x1f680; 【免费下载链接】inter The Inter font family 项目地址: https://gitcode.com/gh_mirrors/in/inter 你知道吗&#xff1f;一个未优化的字体文件可能让你的网页加载时间增加30%以上&…...

如何在5分钟内完成BepInEx安装:游戏插件框架终极指南

如何在5分钟内完成BepInEx安装&#xff1a;游戏插件框架终极指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一款功能强大的游戏插件框架&#xff0c;专为Unity Mono…...

Speechless:你的微博时光机,一键备份珍贵回忆

Speechless&#xff1a;你的微博时光机&#xff0c;一键备份珍贵回忆 【免费下载链接】Speechless 把新浪微博的内容&#xff0c;导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 在数字时代&#xff0c;我们的社…...

46页可编辑PPT | 企业数字化转型总体规划与实践汇报方案

很多企业在数字化转型过程中会遇到一些共同的痛点。比如&#xff0c;数据孤岛问题&#xff0c;不同部门的数据互不相通&#xff0c;导致信息共享困难&#xff1b;业务流程繁琐&#xff0c;效率低下&#xff0c;难以快速响应市场变化&#xff1b;技术更新换代快&#xff0c;现有…...

别再到处找靶场了!一个OWASP BWA虚拟机搞定30+个Web漏洞环境(附SSH连接与MySQL密码修改指南)

OWASP BWA&#xff1a;一站式Web安全实战环境的终极解决方案 对于Web安全初学者和爱好者来说&#xff0c;寻找合适的漏洞靶场往往比学习技术本身更令人头疼。你是否也曾在不同平台间反复切换&#xff0c;下载各种零散的虚拟机镜像&#xff0c;只为练习一个简单的SQL注入或XSS漏…...

BUUCTF实战:从内存镜像到加密容器——[VN2020]内存取证全流程解析

1. 初识内存取证&#xff1a;从CTF赛题到实战思维 第一次接触内存取证是在去年的BUUCTF比赛中&#xff0c;当时看到那道[V&N2020]公开赛题目完全摸不着头脑。现在回想起来&#xff0c;内存取证就像是在案发现场收集指纹——只不过我们面对的是计算机运行时留下的"数字…...

降AI提示词够用吗?降AI工具比prompt强在哪?嘎嘎降AI双降!

降AI提示词够用吗&#xff1f;降AI工具比prompt强在哪&#xff1f;嘎嘎降AI双降&#xff01; 用 AI 写论文的同学经常纠结一件事&#xff1a;0 元的降 AI 提示词够用吗&#xff1f;还是非得花钱买降 AI 工具不可&#xff1f; 直接给结论&#xff1a; 如果你 AI 写得不多、整体 …...

运维实战:ESXi主机物理网卡闪断致部分VM网络中断的排查与应急恢复

1. 故障现象与初步判断 那天凌晨2点15分&#xff0c;值班手机突然响起刺耳的告警声。监控系统显示&#xff0c;ESXi主机上的三台关键业务虚拟机网络连接中断&#xff0c;而其他虚拟机却运行正常。这种部分VM断网的情况立刻引起了我的警觉——这通常意味着问题出在物理层而非虚拟…...

告别重启!IDEA里用JRebel插件实现Java代码秒级热更新(附最新激活与配置避坑指南)

告别重启&#xff01;IDEA里用JRebel插件实现Java代码秒级热更新&#xff08;附最新激活与配置避坑指南&#xff09; 作为一名长期与Java打交道的开发者&#xff0c;你是否经历过这样的痛苦循环&#xff1a;修改一行代码 → 保存 → 等待漫长的Tomcat重启 → 验证修改 → 发现…...

别再只会暴力破解!CTF密码学题中的那些‘送分’套路与高效工具盘点

CTF密码学解题&#xff1a;从特征识别到精准打击的高效方法论 在CTF竞赛中&#xff0c;密码学题目往往被参赛者视为"送分题"&#xff0c;但现实情况却是许多队伍在这些看似简单的题目上浪费大量时间。真正高效的解题者与普通选手的区别&#xff0c;往往在于对题目特…...

【Docker】解放C盘空间:在Win10上利用WSL2迁移Docker镜像存储路径实战

1. 为什么需要迁移Docker镜像存储路径&#xff1f; 很多Windows 10用户在使用Docker进行开发时都会遇到一个头疼的问题&#xff1a;C盘空间莫名其妙就被占满了。我自己就曾经遇到过这种情况&#xff0c;明明没装多少软件&#xff0c;C盘却显示只剩下几个GB的空间。后来发现罪魁…...

从零组装一台智能避障小车:STM32F103RCT6核心控制板、SG90舵机与HC-SR04超声波模块的软硬件联调全记录

从零构建智能避障小车&#xff1a;STM32F103RCT6核心与多传感器融合实战指南 在创客圈里&#xff0c;智能小车一直是验证嵌入式系统能力的经典项目。当传统的循迹小车已经不能满足你的技术探索欲望时&#xff0c;为它装上"眼睛"和"大脑"&#xff0c;打造一…...

别再死磕动态规划了!用Python模拟退火算法搞定背包问题,附完整代码

用Python模拟退火算法优雅解决背包问题&#xff1a;从理论到实战 在算法学习的过程中&#xff0c;背包问题就像一座难以逾越的高山&#xff0c;让无数初学者望而生畏。传统的动态规划解法虽然精确&#xff0c;但代码实现复杂、状态转移方程难以理解&#xff0c;对于实际应用场景…...