Linux三剑客之sed

一、sed简介

sed(stream editor):定位并修改数据

二、sed基本用法与常用参数

2.1、语法结构

sed [addr]x[options]

  • -e 表达式
  • sed -n ‘2p’:打印第二行
  • sed ‘#s#hello#word#’:修改
  • -i:直接修改源文件
  • -E:扩展表达式
  • -debug:调试

2.2、sed pattern 表达式

  • 行数与行数范围:20 30,35
  • 正则匹配:/pattern/
  • 区间匹配://,//

2.3、sed action表达式

  • p:打印,通常结 合参数-n:sed -n ‘2p’
  • s:查找替换,s/REGEXP/REPLACEMENT/[FLAGS]
  • d删除,删除前两行 sed ‘1,2d’
  • a追加
  • c改变
  • i插入内容到匹配行之前
  • e执行命令
  • 分组匹配与字段提取:sed ‘s#([0-9]|[a-z])#\1\2#’

实战案例

s表达式

  • s表示替换

  • s后面的追加字符可以为任意字符

  • g表示全局匹配
    image

  • &表示匹配内容
    image

反向引用

  • 使用()对数据进行分组
  • 使用\1\2反向引用分组
    image

行数操作

  • 打印特定的行 sed -n 2p
    image
  • 删除最后一行:sed ‘$d’
    image

官方文档: sed, a stream editor (gnu.org)