侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux下sed命令用法详解:流编辑器的使用教程和技巧

Linux sed命令介绍

sed是一个流编辑器,它的全称是stream editor。它可以对文件或管道中的文本进行编辑,但是它不提供交互式的文本编辑器界面。相反,你需要为它提供一些指令,让它按照指令来处理文本。这些指令可以在命令行中输入,也可以写在一个脚本文件中。

sed最常用的功能是替换文本。它可以在文件或管道中搜索指定的模式,并用想要的字符串来替换它。sed还可以选择、添加、删除、修改文本中的内容,以及对原始文件进行保存或不保存的操作。

sed的模式匹配和文本选择功能依赖于正则表达式(regex)。要想有效地使用sed,你需要对正则表达式有一定的了解。

适用的Linux版本

sed可以在大多数Linux发行版中安装和使用,它是GNU项目的一部分。如果你的Linux系统没有预先安装sed,你可以从GNU网站下载源代码并自己编译安装。编译安装的过程很简单,只需要执行以下命令:

[linux@bashcommandnotfound.cn ~]$ ./configure
[linux@bashcommandnotfound.cn ~]$ make
[linux@bashcommandnotfound.cn ~]$ sudo make install

不同的Linux发行版可能使用不同的包管理工具来安装软件包,例如CentOS 7和CentOS 8分别使用yum和dnf。如果你想使用包管理工具来安装sed,你可以根据你的Linux发行版选择相应的命令,例如:

  • CentOS 7或Red Hat Enterprise Linux 7
[linux@bashcommandnotfound.cn ~]$ sudo yum install sed
  • CentOS 8或Red Hat Enterprise Linux 8
[linux@bashcommandnotfound.cn ~]$ sudo dnf install sed
  • Debian或Ubuntu
[linux@bashcommandnotfound.cn ~]$ sudo apt install sed
  • Fedora
[linux@bashcommandnotfound.cn ~]$ sudo dnf install sed
  • Arch Linux或Manjaro
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S sed

Linux sed命令的基本用法

sed命令的语法格式如下:

sed [options] [script] [inputfile...]

其中,options是可选的参数,用于指定一些编辑器的设置或功能;script是包含指令的脚本文件或字符串;inputfile是要编辑的文件名,可以是一个或多个,如果没有指定文件名,则从标准输入读取。

Linux sed命令的常用选项说明

sed命令有很多选项,可以用来控制编辑器的行为和外观。以下是一些常用的选项:

选项说明
-e script在命令行中指定一个或多个指令
-f scriptfile指定一个包含指令的脚本文件
-i对原始文件进行修改并保存
-n不输出模式空间中的内容
-r使用扩展正则表达式
-s将多个文件视为一个文件处理
-v显示版本信息

Linux sed命令的常用指令说明

sed命令支持多种指令,可以用来对文本进行各种操作。以下是一些常用的指令:

指令说明
a\text在当前行后面追加文本
c\text用文本替换当前行
d删除当前行
i\text在当前行前面插入文本
p打印当前行
q退出sed
r file读取文件并将其内容插入到当前行后面
s/old/new/用新字符串替换旧字符串
w file将当前行写入文件
y/source/dest/将源字符集中的字符替换为目标字符集中的字符

Linux sed命令的实例

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

  • 在命令行中使用echo命令发送一些文本到sed,然后用sed替换其中的一部分文本
[linux@bashcommandnotfound.cn ~]$ echo howtogonk | sed 's/gonk/geek/'
  • 打开一个文件并用sed替换其中的一部分文本
[linux@bashcommandnotfound.cn ~]$ sed 's/hello/world/' input.txt > output.txt
  • 在命令行中指定多个指令并用sed对文件进行编辑
[linux@bashcommandnotfound.cn ~]$ sed -e 's/hello/world/' -e 's/foo/bar/' input.txt > output.txt
  • 指定一个包含指令的脚本文件并用sed对文件进行编辑
[linux@bashcommandnotfound.cn ~]$ echo 's/hello/world/' > myscript.sed
[linux@bashcommandnotfound.cn ~]$ sed -f myscript.sed input.txt > output.txt
  • 对原始文件进行修改并保存
[linux@bashcommandnotfound.cn ~]$ sed -i 's/hello/world/' input.txt
  • 使用扩展正则表达式进行模式匹配和替换
[linux@bashcommandnotfound.cn ~]$ sed -r 's/([0-9]+) ([a-z]+)/\2 \1/' input.txt > output.txt
  • 删除空白行
[linux@bashcommandnotfound.cn ~]$ sed '/^$/d' input.txt > output.txt
  • 在每行前面添加行号
[linux@bashcommandnotfound.cn ~]$ sed '=' input.txt | sed 'N;s/\n/ /' > output.txt
  • 将文本中的大写字母转换为小写字母
[linux@bashcommandnotfound.cn ~]$ sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' input.txt > output.txt

Linux sed命令的注意事项

  • sed命令有很多指令和选项,如果不熟悉,可以使用man sed或info sed来查看帮助信息。
  • sed命令支持基本正则表达式(BRE)和扩展正则表达式(ERE),可以用-r选项来切换。
  • sed命令可以使用地址来选择要处理的行,地址可以是数字、正则表达式或范围。
  • sed命令可以使用模式空间和保持空间来存储和操作文本,可以使用n,N,d,D,g,G,h,H,p,P等指令来控制它们。

快捷键

sed命令在执行指令时,可以使用一些快捷键来简化输入或修改操作。以下是一些常用的快捷键:

快捷键说明
&代表上一个替换指令中匹配到的字符串
\1,\2,...代表上一个替换指令中匹配到的第一个、第二个...子表达式
g在替换指令中表示对所有匹配项进行替换,而不是只替换第一个
i,I在替换指令中表示忽略大小写
w,W在替换指令中表示只匹配单词
0

评论区