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

linux sed:功能强大的流式文本处理器

sed(Stream Editor)是Linux中强大的流式文本处理器,它以非交互方式逐行处理文本,通过简洁的命令实现查找、替换、删除、插入等操作,是自动化脚本和高效文本处理的利器。

一、核心概念与基础语法

基本命令格式

sed [选项] '命令' 输入文件

常用选项

  • -n:禁止默认输出(常与p命令配合)

  • -i:直接修改源文件(⚠️危险操作!建议先测试)

  • -e:执行多条命令(如 sed -e 's/foo/bar/' -e '/baz/d' file

  • -r:启用扩展正则表达式(简化转义)

基础命令结构

sed 's/查找模式/替换内容/标志' filename  # 替换操作
sed '行号命令' filename                 # 指定行操作
sed '/模式/命令' filename              # 模式匹配操作

二、高频使用场景与示例

1. 文本替换(最常用)
# 替换每行首个"apple"为"orange"
sed 's/apple/orange/' fruits.txt # 替换所有"error"为"ERROR"(全局替换)
sed 's/error/ERROR/g' logfile.log# 删除所有空行
sed '/^$/d' config.conf
2. 行范围操作
# 删除第5-10行
sed '5,10d' data.txt# 在第3行后插入文本
sed '3a\插入的内容' file# 替换第100行到文件末尾的"old"为"new"
sed '100,$s/old/new/' largefile
3. 模式匹配操作
# 删除包含"debug"的行
sed '/debug/d' code.py# 对以"2023-"开头的行执行替换
sed '/^2023-/s/ /_/g' dates.log
4. 引用匹配内容(& 和 \1)
# 为所有数字添加括号:123 → [123]
sed 's/[0-9]\+/[&]/g' text.txt# 调换字段顺序:John,Doe → Doe,John
sed 's/\(.*\),\(.*\)/\2,\1/' names.csv
5. 文件原地修改(谨慎使用!)
# 替换并备份原文件(生成file.bak)
sed -i.bak 's/old/new/g' file# 直接修改无备份(确保命令正确!)
sed -i 's/path\/to/opt\/new_path/' config.cfg

三、经典应用场景

  1. 日志清洗

   # 提取时间戳和错误码:日志行 "2023-08-16 ERROR [code:500]"sed -n 's/.*\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\) .*\(ERROR\).*code:\([0-9]\+\).*/\1 \2 \3/p' app.log
  1. 配置文件批量更新

   # 将所有"http://"替换为"https://"sed -i 's|http://|https://|g' /etc/nginx/conf.d/*.conf
  1. 数据格式转换

   # CSV转TSV(逗号→制表符)sed 's/,/\t/g' data.csv > data.tsv
  1. 代码注释/取消注释

   # 注释Python的print语句sed '/print/s/^/# /' script.py# 取消以#开头的注释sed 's/^# //' config.template

四、sed vs awk:如何选择?

特性sedawk
核心能力基于行的流编辑文本处理+编程语言
复杂度简单替换/删除支持变量、条件、循环等
列处理弱(需正则捕获)强(自动分割字段 $1,$2...
适用场景简单替换、行过滤、批量编辑复杂报表、数据统计、字段运算

经验法则

  • sed处理行级替换/删除

  • awk处理列数据计算或报表生成

五、高效学习路径

  1. 掌握核心命令s(替换), d(删除), p(打印), a/i(插入)

  2. 理解正则表达式^ $ . * [ ] \( \) \|

  3. 练习范围操作:行号(10,20)、模式(/start/,/end/

  4. 组合命令sed -e 'command1' -e 'command2'

  5. 先测试再写入永远先用不带-i的命令测试输出

💡 Pro Tip:复杂操作可保存为脚本文件:

sed -f edit_script.sed input.txt

结语

sed以其高效流处理和简洁语法成为Linux文本处理的基石。掌握它,你将拥有批量处理日志、配置、代码的自动化能力。从简单替换开始,逐步探索正则与范围操作,很快你就能在终端中优雅地驯服海量文本数据。

附:速查表

s/old/new/g     # 全局替换
/pattern/d      # 删除匹配行
3,7s/foo/bar/   # 替换3-7行的foo
1i\text         # 在第1行前插入
$a\text         # 在最后一行后插入
y/abc/ABC/      # 字符转换(a→A, b→B)
q               # 处理到第5行退出:sed '5q' file
http://www.dtcms.com/a/559010.html

相关文章:

  • 行业类网站应如何建设企业简介ppt范文大全免费
  • 全站仪为什么要建站shopify建站流程
  • 玉树wap网站建设微信公众号编辑教程
  • logo制作在线seo自动点击排名
  • 合肥高端网站建设公司wordpress网站好优化吗
  • 制作网站的工具wordpress附件类型
  • 建设工程企业资质工作网站网站正在建设中英文表述
  • 浅谈博星卓越网站建设qfd 网站开发
  • 淄博网站推广公司动漫网站开发 sh框架
  • 设计网站需求做ppt高手_一定要常去这八个网站
  • python 模块和包-之十一
  • Caesar(攻防世界)
  • Easyx图形库应用(题外话之大文件传输)
  • Dotnet使用Aspire抓取MCP两端交互数据
  • 模板建站oem代理网站设计 西安
  • 网站建设模板之家免费下载企业集团网站源码
  • 网站建设 设计创意河池环江网站建设
  • 网站实现步骤及方法是娄底高端网站建设
  • 网站建设翻译插件西安旅游
  • 网站设计网页版有没有好玩的网页游戏
  • [性能测试]
  • 网站以前在百度能搜索不到了如何选择定制酒
  • 汇邦团建网站谁做的成都优化推广公司
  • 平谷网站建设域名怎么解析到网站
  • 品牌平价网站建设如何在vps上搭建网站
  • 南阳网站运营招聘信息网站常用的优化方法
  • 苏州seo全网营销windows优化大师下载安装
  • 如何查询网站的服务器网站建设公司哪好
  • 工程建设科学技术奖申报网站建设物流
  • 企业招聘网站排行榜gta5房地产网站建设中