sed 常用命令

时间:2025-03-26 21:15:55

1.sed

1.1 sed 简介

sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。

1.2 命令格式

sed 命令行格式为: sed [选项] ‘command’ 输入文本

  • 选项 说明
  • -n 使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行
  • -e 多重编辑,且命令顺序会影响结果
  • -f 指定一个 sed 脚本文件到命令行执行,
  • -r Sed 使用扩展正则
  • -i 直接修改文档读取的内容,不在屏幕上输出

1.3 sed操作命令

如果没有指定地址,sed 就会处理输入的所有的行

  • 命令 说明
  • a\ 在当前行后添加一行或多行
  • c\ 用新文本修改(替换)当前行中的文本
  • d 删除行
  • i\ 在当前行之前插入文本
  • h 把模式空间里的内容复制到暂存缓存区
  • H 把模式空间里的内容追加到暂存缓存区
  • g 取出暂存缓冲区里的内容,将其复制到模式空间,覆盖该处原有内容
  • G 取出暂存缓冲区里的内容,将其复制到模式空间,追加在原有内容后面
  • l 列出非打印字符
  • p 打印行
  • n 读入下一输入行,并从下一条命令而不是第一条命令开始处理
  • q 结束或退出 sed
  • r 从文件中读取输入行
  • ! 对所选行意外的所有行应用命令
  • s 用一个字符串替换另一个

1.4报错信息

遇到语法错误时,sed 会向标准错误输出发送一条相当简单的报错信息。如果 sed判断不出错在何处,给出令人迷惑的报错信息。

如果没有语法错误,sed将会返回给 shell 一个退出状态,
状态为 0 代表成功,为非 0 整数代表失败

增删操作

2.1增删

  • 1.在文件的第1行后面增加一行(new line),并将结果输出到标准输出:
$ sed -e 1a\newline 
  • 1
  • 2.显示文件内容并列出行号,同时,删除第3-5行
$ nl  |sed -e '3,5d' 
  • 1
  • 3.只删除第3行
$ nl  |sed -e '3d' 
  • 1
  • 4.删除第3行到最后一行
$ nl  |sed -e '3,$d' 
  • 1
  • 5.在第二行后(即加在第三行) 加上drink tea? 字样
$ nl  |sed -e '2a drink tea?' 
  • 1
  • 6.在第二行前 加上drink tea? 字样
$ nl  |sed -e '2i drink tea?' 
  • 1
  • 7.增加两行以上用\(如line1 line2)
 nl  |sed -e '2a line1 \line2'
  • 1

每一行之间都必须要以反斜杠 \ 来进行新行标记

2.2 换

  • 1.将第 2-5 行的内容取代成为 No 2-5 number
$ nl  | sed '2,5c No 2-5 number'
  • 1
  • 2.将中666替换成888
$ sed -i 's/666/888/g' 
  • 1
  • 3.删除中所有包含666的行,其它行输出
$ nl  |sed  '/666/d' 
  • 1
  • 4.搜索 ,找到 666 对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把666 替换为 888,再输出这行:
$ nl  | sed -n '/666/{s/666/888/;p;q}' 
#q 退出
  • 1
  • 2
  • 5.一条 sed 命令,删除 第三行到末尾的数据,并把 HELLO 替换为 RUNOOB :
$ nl  | sed -e '3,$d' -e 's/HELLO/RUNOOB/'
  • 1