Linux sed命令详解

sed是一种常见的流编辑器,可依照脚本的命令来处理、编辑文本文件,并且完美匹配正则表达式,功能强大。

1、sed命令语法:

> sed [option] 'SCRIPTS' FILE...
> sed [-hHV][-e<script>][-f<script文件>][文本文件]  

2、sed命令功能

[option]
  • -e 以选项中指定的script来处理输入的文本文件。
  • -f 以选项中指定的script文件来处理输入的文本文件。
  • -h或H显示帮助。
  • -n 取消默认的完整输出,仅显示script处理后的结果。
  • -V 显示版本信息。
[动作命令]
  • a 新增,a后接字串,并在新一行出现。
  • “a\” 最后一行新增字串。
  • c 取代,用此符号后的新文本替换当前行中的文本。
  • d 删除行
  • i 插入,i 的后面可以接字串。
  • p 打印,常与“sed -n"连用。
  • s 取代,与g连用,常与正则表达式搭配使用,例如例如1,20s/old/new/g。
  • n 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理。
  • q 结束或退出sed。
  • w 将所选的行写入文件。
  • r 从文件中读取输入行。
  • y 将字符替换为另一字符,正则表达式除外。
  • l 列出非打印字符,包括控制字符。
  • -iSUFFIX 修改源文件,同时创建一个备份文件。例如:sed -i.bak '1,10d' test,生成一个test.bak备份文件。
高级语法
  • h/H 复制拷贝/追加模式空间(缓冲区)到存放空间
  • g/G 粘贴 从存放空间取回/追加到模式空间
  • x 两个空间内容的交换
  • n/N 拷贝/追加下一行内容到当前
  • D 删除\n之前的内容
  • P 打印\n之前的内容
  • b 无条件跳转
  • t 满足匹配后的跳转
  • T 不满足匹配时跳转

3、实例

原文件如图

3.1只打印3行
> sed -n '3p' /tmp/text.txt

3.2打印第5到第10行
> sed -n '3,10p' /tmp/text.txt

3.3在第1行到第4行的每行添加1234567890
> sed '1,5i 1234567890' /tmp/text.txt 

3.4删除"1234567890"
>  sed '/1234567890/ d ' /tmp/text.txt

3.5打印5-10行,并显示行号
> sed -n -e '5,10p' -e '=' /tmp/text.txt

3.6将第三行内容替换为glibc
> sed '3cglibc' /tmp/text.txt
3.7删除空行
> sed '/^$/d' newfile >> /tmp/text.txt
3.8把fstab中包含xfs的记录(行)写入新的文件中
> sed '/xfs/w newfile' /tmp/text.txt
posted @ 2019-08-08 16:03  浮梦一秋  阅读(446)  评论(0)    收藏  举报