Linux sed命令介绍
sed是stream 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)
这里,options是sed命令的选项,command是你要sed执行的命令,file(s)是你要处理的文件。
Linux sed命令的常用选项或参数说明
以下是sed命令的一些常用选项:
| 选项 | 描述 |
|---|---|
-n | 安静模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。 |
-e | 直接在命令列模式上进行 sed 的动作编辑。 |
-f | 直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作。 |
-r | sed 的动作支持的是基础正则表达式,这样不支持 ?、+ 和 {} 等特殊字符。但如果加上 -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。你可以使用你的包管理器(如yum或dnf)来安装。
Linux sed相关命令
- awk命令:一种强大的文本分析工具
- grep命令:一种文本搜索工具
更多详细内容可以参考:
linux入门学习教程 - Linux入门自学网
Linux下sed命令用法详解:流编辑器的使用教程和技巧
Linux comm命令教程:如何比较两个文件的内容(附案例详解和注意事项)