sed命令–处理编辑文本文件

Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处理、编辑文本文件。sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

语法格式:sed [参数]

常用参数
描述

-e或--expression=<script>

以选项中指定的script来处理输入的文本文件

-f<script文件>或--file=<script文件>

以选项中指定的script文件来处理输入的文本文件

-h或--help

显示帮助

-n或--quiet或--silent

仅显示script处理后的结果

-V或--version

显示版本信息

-i

修改原文件

-i.bak

在做修改的同时将原文件备份一份,备份的文件名为 oldName.bak

a

在当前行下面插入文本。

i

在当前行上面插入文本。

c

把选定的行改为新的文本。

d

删除,删除选择的行。不指定范围则删除所有

D

删除模板块的第一行。

s

替换指定字符

-r

在脚本中使用扩展正则表达式

sed替换标记

参数
描述

g

表示行内全面替换。

p

表示打印行。

w

表示把行写入一个文件。

x

表示互换模板块中的文本和缓冲区中的文本。

y

表示把一个字符翻译为另外的字符(但是不用于正则表达式)

\1

子串匹配标记

&

已匹配字符串标记

sed元字符集

参数
描述

^

匹配行开始,如:/^sed/匹配所有以sed开头的行。

$

匹配行结束,如:/sed$/匹配所有以sed结尾的行。

.

匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。

*

匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。

[]

匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。

[^]

匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。

(..)

匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替换成lovers。

&

保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。

<

匹配单词的开始,如:/<love/匹配包含以love开头的单词的行。

>

匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。

x{m}

重复字符x,m次,如:/0{5}/匹配包含5个0的行。

x{m,}

重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。

x{m,n}

重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。

参考实例

在file文件的第四行后添加一行,并将结果输出到标准输出:

将 /dir 的内容列出并且列印行号,同时删除第 2~5 行:

在第二行后面加入两行字,例如 Drink tea or ….. 与 drink beer:

将第2-5行的内容取代成为No 2-5 number:

以行为单位的显示:

用sed命令在文件指定行加入内容

文本内容如下:

删除指定行

需求: 在有aaa的行中,将 111 替换为 AAA,将 222 替换为 BBB 即,输出结果为:

方法如下:

有多个替换选项,可以用-e参数

注释指定行

替换指定行中的部分字符

替换指定开头行的所有内容

截取指定时间范围的内容

文件中需要有类似如下的时间记录开头

多行替换

替换成

示例:

与该功能相关的Linux命令:

rmdir命令 – 删除空目录 ed命令 – 文本编辑 tempfile命令 – 临时文件命名 jed命令 – 编辑文本文件 ispell命令 – 用于拼写检查程序 rm命令 – 移除文件或目录 vi命令 – 文本编辑器 nano命令 – 字符终端文本编辑器 head命令 – 显示文件开头内容 join命令 – 连接两个文件

最后更新于