Linux sed命令教程:如何使用流编辑器进行文本处理(附实例教程和注意事项)

发布时间:2023年12月30日

Linux sed命令介绍

sedstream editor的缩写,意为流编辑器。它是一种在命令行下处理文本文件的工具。sed主要用于自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

Linux sed命令适用的Linux版本

sed命令在大多数Linux发行版中都是预装的,包括但不限于Ubuntu、Debian、Fedora、CentOS等。如果你发现你的系统中没有预装sed,你可以使用你的包管理器来安装。例如,在CentOS 7中,你可以使用yum来安装:

[linux@bashcommandnotfound.cn ~]$ sudo yum install sed

在CentOS 8和其他使用dnf的发行版中,你可以使用:

[linux@bashcommandnotfound.cn ~]$ sudo dnf install sed

Linux sed命令的基本语法

sed命令的基本语法如下:

sed [options] 'command' file(s)

这里,optionssed命令的选项,command是你要sed执行的命令,file(s)是你要处理的文件。

Linux sed命令的常用选项或参数说明

以下是sed命令的一些常用选项:

选项描述
-n安静模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。
-e直接在命令列模式上进行 sed 的动作编辑。
-f直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作。
-rsed 的动作支持的是基础正则表达式,这样不支持 ?+{} 等特殊字符。但如果加上 -r 参数,则可以支持扩展型正则表达式。
-i直接修改读取的文件内容,而不是由屏幕输出。

Linux sed命令的实例

以下是一些sed命令的实例:

实例1:打印文件内容

[linux@bashcommandnotfound.cn ~]$ sed -n 'p' file.txt

这个命令会打印file.txt文件的内容。

实例2:删除空白行

[linux@bashcommandnotfound.cn ~]$ sed '/^$/d' file.txt

这个命令会删除file.txt文件中的空白行。

实例3:替换字符串

[linux@bashcommandnotfound.cn ~]$ sed 's/test/TEST/' file.txt

这个命令会将file.txt文件中的第一个test替换为TEST

实例4:在每一行的开头添加文本

[linux@bashcommandnotfound.cn ~]$ sed 's/^/Hello, /' file.txt

这个命令会在file.txt文件的每一行的开头添加Hello,

实例5:在每一行的结尾添加文本

[linux@bashcommandnotfound.cn ~]$ sed 's/$/ --End/' file.txt

这个命令会在file.txt文件的每一行的结尾添加 --End

实例6:删除特定行

[linux@bashcommandnotfound.cn ~]$ sed '3d' file.txt

这个命令会删除file.txt文件的第三行。

实例7:替换文件中的所有匹配项

[linux@bashcommandnotfound.cn ~]$ sed 's/test/TEST/g' file.txt

这个命令会将file.txt文件中的所有test替换为TEST

实例8:只打印匹配行

[linux@bashcommandnotfound.cn ~]$ sed -n '/pattern/p' file.txt

这个命令会打印file.txt文件中所有包含pattern的行。

实例9:替换指定行的文本

[linux@bashcommandnotfound.cn ~]$ sed '3s/test/TEST/' file.txt

这个命令会将file.txt文件的第三行中的test替换为TEST

实例10:插入文本到指定行

[linux@bashcommandnotfound.cn ~]$ sed '3i\Hello, World!' file.txt

这个命令会在file.txt文件的第三行之前插入Hello, World!

实例11:追加文本到指定行

[linux@bashcommandnotfound.cn ~]$ sed '3a\Hello, World!' file.txt

这个命令会在file.txt文件的第三行之后追加Hello, World!

实例12:替换指定行范围的文本

[linux@bashcommandnotfound.cn ~]$ sed '3,5s/test/TEST/' file.txt

这个命令会将file.txt文件的第三行到第五行中的test替换为TEST

实例13:删除指定行范围的文本

[linux@bashcommandnotfound.cn ~]$ sed '3,5d' file.txt

这个命令会删除file.txt文件的第三行到第五行。

实例14:替换指定模式的文本

[linux@bashcommandnotfound.cn ~]$ sed '/pattern/s/test/TEST/' file.txt

这个命令会将file.txt文件中包含pattern的行中的test替换为TEST

实例15:删除指定模式的行

[linux@bashcommandnotfound.cn ~]$ sed '/pattern/d' file.txt

这个命令会删除file.txt文件中包含pattern的行。

实例16:替换文件中的所有匹配项(忽略大小写)

[linux@bashcommandnotfound.cn ~]$ sed 's/test/TEST/gI' file.txt

这个命令会将file.txt文件中的所有test(忽略大小写)替换为TEST

实例17:替换指定行范围的文本(忽略大小写)

[linux@bashcommandnotfound.cn ~]$ sed '3,5s/test/TEST/gI' file.txt

这个命令会将file.txt文件的第三行到第五行中的test(忽略大小写)替换为TEST

实例18:替换指定模式的文本(忽略大小写)

[linux@bashcommandnotfound.cn ~]$ sed '/pattern/s/test/TEST/gI' file.txt

这个命令会将file.txt文件中包含pattern的行中的test(忽略大小写)替换为TEST

实例19:删除指定模式的行(忽略大小写)

[linux@bashcommandnotfound.cn ~]$ sed '/pattern/Id' file.txt

这个命令会删除file.txt文件中包含pattern(忽略大小写)的行。

实例20:在每一行的开头和结尾添加文本

[linux@bashcommandnotfound.cn ~]$ sed 's/^/Start /; s/$/ End/' file.txt

这个命令会在file.txt文件的每一行的开头添加Start ,并在每一行的结尾添加 End

Linux sed命令的注意事项

  • sed命令默认不会修改文件内容,如果需要修改文件,可以使用-i选项。
  • 如果你在使用sed命令时遇到bash: sed: command not found错误,你可能需要安装sed。你可以使用你的包管理器(如yumdnf)来安装。

Linux sed相关命令

更多详细内容可以参考:
linux入门学习教程 - Linux入门自学网
Linux下sed命令用法详解:流编辑器的使用教程和技巧
Linux comm命令教程:如何比较两个文件的内容(附案例详解和注意事项)

文章来源:https://blog.csdn.net/u012964600/article/details/135227584
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。