Linux sed命令教程:如何使用流编辑器进行文本处理(附实例教程和注意事项)
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相关命令
更多详细内容可以参考:
linux入门学习教程 - Linux入门自学网
Linux下sed命令用法详解:流编辑器的使用教程和技巧
Linux comm命令教程:如何比较两个文件的内容(附案例详解和注意事项)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!