什么是Linux中的sed命令

2025-10-31 03:26:18

1、sed命令的使用规则

命令格式如下:

sed [option] 'command' input_file

其中option是可选的,常用的option有如下几种:

-n 使用安静(silent)模式,只列出经过sed特殊处理的那一行(或者动作)内容;-e 直接在指令列模式上进行 sed 的动作编辑;-f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行filename内的sed命令;-r 让sed命令支持扩展的正则表达式(默认是基础正则表达式);-i 直接修改读取的文件内容,而不是由屏幕输出;

常用的命令有以下几种:

a \: 即append追加字符串,可将其后的字符加在所选择内容的后面c \: 取代/替换字符串,可将其后内容替换至所选内容d  : 即delete删除,该命令会将当前选中的行删除i \: 即insert插入字符串,可将其后内容插入至所选内容前p  : print即打印,该命令会打印当前选择的行到屏幕上s  : 替换,通常s命令的用法是这样的:1,2s/old/new/g,将old字符串替换成new字符串

命令示例

假设有一个本地文件test.txt,文件内容如下:

[root@linuxprobe ~]$ cat test.txtthis is first linethis is second linethis is third linethis is fourth linethis fifth linehappy everydayend

本节将使用该文件详细演示每一个命令的用法。

2、a命令

[root@linuxprobe ~]$ sed '1a \add one' test.txtthis is first lineadd onethis is secondlinethis is third linethis is fourth linethis is fifth linehappy everydayend

本例命令部分中的1表示第一行,同样的第二行写成2,第一行到第三行写成1,3,用$表示最后一行,比如2,$表示第二行到最后一行中间所有的行(包含第二行和最后一行)。本例的作用是在第一行之后增加字符串”add one”,从输出可以看到具体效果。

[root@linuxprobe ~]$ sed '1,$a \add one' test.txtthis is first lineadd onethis is second lineadd onethis is third lineadd onethis is fourth lineadd onethis is fifth lineadd onehappy everydayadd oneendadd one

本例表示在第一行和最后一行所有的行后面都加上”add one”字符串,从输出可以看到效果。

[root@linuxprobe ~]$ sed '/first/a \add one' test.txtthis is first lineadd onethis is secondlinethis is third linethis is fourth linethis is fifth linehappy everydayend

本例表示在包含”first”字符串的行的后面加上字符串”add one”,从输出可以看到第一行包含first,所以第一行之后增加了”add one”

[root@linuxprobe ~]$ sed '/^ha.*day$/a \add one' test.txtthis is first linethis is secondlinethis is third linethis is fourth linethis is fifth linehappy everydayadd oneend

本例使用正则表达式匹配行,^ha.*day$表示以ha开头,以day结尾的行,则可以匹配到文件的”happy everyday”这样,所以在该行后面增加了”add one”字符串。

3、i命令

i命令使用方法和a命令一样的,只不过是在匹配的行的前面插入字符串,所以直接将上面a命令的示例的a替换成i即可,在此就不啰嗦了。

4、c命令

[root@linuxprobe ~]$ sed '$c \add one' test.txtthis is first linethis is secondlinethis is third linethis is fourth linethis is     fifth linehappy everydayadd one

本例表示将最后一行替换成字符串”add one”,从输出可以看到效果。

[root@linuxprobe ~]$ sed '4,$c \add one' test.txtthis is first linethis is secondlinethis is third lineadd one

本例将第四行到最后一行的内容替换成字符串”add one”。

[root@linuxprobe ~]$ sed '/^ha.*day$/c \replace line' test.txtthis is first linethis is secondlinethis is third linethis is fourth linethis is fifth linereplace lineend

本例将以ha开头,以day结尾的行替换成”replace line”。

5、d命令

[root@linuxprobe ~]$ sed '/^ha.*day$/d' test.txtthis isfirst linethis issecond linethis isthird linethis isfourth linethis isfifth lineend

本例删除以ha开头,以day结尾的行。

[root@linuxprobe ~]$ sed '4,$d' test.txtthisis first linethisis second linethisis third line

本例删除第四行到最后一行中的内容。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:184
  • 阅读量:132
  • 阅读量:190
  • 阅读量:44
  • 阅读量:61
  • 猜你喜欢