流编辑器sed的使用


sed命令简介

sed全称为stream editor,即流编辑器。它擅长对文本进行逐行处理,能够实现文本替换、删除、插入、修改等多种操作。sed的强大之处在于它可以自动处理多行文本而无需人工手动干预 。

基本用法详解

命令格式

1、sed [选项] '命令' 文件
2、命令 | sed [选项] '命令'

选项列表

  • −n:使用静默模式,只显示经过sed处理的行,否则会显示所有文本。
  • −e:标识其后的命令为多条语句的集合,各语句通常使用分号分隔。
  • −r:命令支持扩展的正则表达式。
  • −i:直接修改文件的内容,否则只在终端显示处理结果。
  • −f:执行sed命令脚本,f选项后为脚本文件名称。

命令列表

  • −p:打印匹配的文本行。
  • −a:在匹配的文本下一行插入内容。
  • −i:在匹配的文本上一行插入内容。
  • −s:替换匹配的字符串。
  • −d:删除匹配的文件行。

使用示例

1、sed [选项] '匹配规则p' 文件:打印符合匹配规则的文本行。p命令通常与选项n连用,只显示处理过的文本行。

1.1、'行号p':打印指定行的内容,行号从1开始。

sed
  • '3p':打印第三行的内容。

1.2、'行号1p;行号2p;...':打印多行内容。

sed
  • '1p;3p':打印第一行和第三行的内容。

1.3、'起始行号,结束行号p':打印起始行号至结束行号间的所有内容。

sed
  • '1,3p':打印第一行至第三行的所有内容。

1.4、'/匹配字符串/p':打印含有匹配字符串的文本行。

sed
  • '/1986/p':打印含有字符串1986的文本行。

1.5、'/正则字符串/p':打印含有与正则匹配的字符串的文本行。若字符串为正则表达式,需要使用选项−r。

sed
  • "/'1986−[0−9]{2}−[0−9]{2}'$/p":打印以字符串'1986−2位数字−2位数字'结尾的文本行。

2、sed [选项] '匹配规则i 内容' 文件:在符合匹配规则的行前插入指定内容。

2.1、'行号i 内容':在指定的行号前插入指定内容。

sed
  • '3i Developer:':在第三行前插入内容Developer:。

2.2、'/字符串/i 内容':在含有字符串的行前插入指定内容。

sed
  • '/10003/i Developer:':在含有字符串10003的行前插入内容Developer:。

3、sed [选项] '匹配规则a 内容' 文件:在符合匹配规则的行后插入指定内容。

3.1、'行号a 内容':在指定的行号后插入指定内容。

sed
  • '3a Developer:':在第三行后插入内容Developer:。

3.2、'/字符串/a 内容':在含有字符串的行后插入指定内容。

sed
  • '/10003/a Developer:':在含有字符串10003的行后插入内容Developer:。

4、sed [选项] '匹配规则d' 文件:删除符合匹配规则的文本行。

4.1、'行号d':删除指定行的内容,行号从1开始。

sed
  • 3d:删除第三行的内容。

4.2、'行号1d;行号2d;...':删除多行内容。

sed
  • '1d;3d':删除第一行和第三行的内容。

4.3、'起始行号,结束行号d':删除起始行号至结束行号间的所有内容。

sed
  • '1,3d':删除第一行至第三行的所有内容。

4.4、'/匹配字符串/p':删除含有匹配字符串的文本行,可使用正则。

sed
  • "/'1986−[0−9]{2}−[0−9]{2}'$/p":删除以字符串'1986−2位数字−2位数字'结尾的文本行。

5、sed [选项] 's/目标字符串/替换字符串/' 文件:将文件中的目标字符串替换为新的字符串。通常与选项−n连用,只显示替换的行。

sed
  • 's/Parto/PARTO/':将字符串Parto替换为PARTO。

6、sed −i '命令' 文件:将命令的执行结果直接写入文件中。

sed

发表评论

评论数量:0