正则表达式 ------ Sed工具详解

Sed是文本处理工具,依赖于正则表达式,可以读取文本内容,根据指定条件对数据进行添加、删除、替换等操作,广泛应用于shell脚本,以完成自动化处理任务。
Sed在处理数据时默认不直接修改源文件,而是把当前处理的行存储在临时缓冲区中,所有指令都在缓冲区中操作,处理完成后,把缓冲区内容默认输出到屏幕,接着处理下一行内容,这样不断重复,直到文件末尾,文件本身内容并没有做任何改变。

一、Sed三大功能:
(1)读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中;
(2)执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行;
(3)显示:发送修改后的内容到输出流,再发送数据后,模式空间将会被清空。

***注意:默认情况下,所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

二、Sed命令两种格式:
其中,“参数”是指操作的目标文件,当存在多个操作对象时用,文件之间用逗号“,”分隔;而 scriptfile 表示脚本文件,需要用“-f”选项指定,当脚本文件出现在目标文件之前时,表示通过指定的脚本文件来处理输入的目标文件。

  • sed [选项] ‘操作’ 参数
  • sed [选项] -f scriptfile 参数

(1)常见的 sed命令选项:

  • -e :表示用指定命令或者脚本来处理输入的文本文件;
  • -f :表示用指定的脚本文件来处理输入的文本文件;
  • -h :显示帮助;
  • -n :表示仅显示处理后的结果;
  • -i :直接编辑文本文件;

(2)常见的操作选项:

  • a:增加,在当前行下面增加一行指定内容;
  • c:替换,将选定行替换为指定内容;
  • d:删除,删除选定的行;
  • i :插入,在选定行上面插入一行指定内容;
  • p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容,通常与 -n选项一起使用;
  • s :替换,替换指定字符;
  • y :字符转换;

三、操作演示:
准备了一个名为 zzz.txt的文件,里面内容如下所示:
正则表达式 ------ Sed工具详解
(1)输出符合条件的文本(p 表示正常输出)
正则表达式 ------ Sed工具详解
正则表达式 ------ Sed工具详解
sed工具刷选出的奇偶行是相对的,并不是绝对的。
正则表达式 ------ Sed工具详解
(2)当sed 命令结合正则表达式时,格式略有不同,正则表达式以 “/” 包围。
正则表达式 ------ Sed工具详解