1.Sed简介

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

sed工作原理和使用方法_第1张图片


sed工作原理图

 

2.命令说明

sed [options] 'AddressCommand'  file ...

       -n:         静默模式,不再默认显示模式空间中的内容

       -i:         直接修改原文件

       -e           SCRIPT -e SCRIPT:可以同时执行多个脚本

       -f          引用编辑好的sed脚本

       -r:        表示使用扩展正则表达式

 

3.Address寻址

1StartLine,EndLine               指定开始和结束行

       1,100     表示从1100

2/RegExp/                                   使用正则表达式

       /^root/ 

3/pattern1/,/pattern2/        模式匹配锁定范围

       第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行

4LineNumber

       指定的行

5StartLine, +N

       startLine开始,向后的N行,共N+1行。

 

4.Command说明

       d:                 删除符合条件的行;

       p:                显示符合条件的行;

       a\string:     在指定的行后面追加新行,内容为string

                                          \n:可以用于换行

       i\string:      在指定的行前面添加新行,内容为string

       r FILE:       将指定的文件的内容添加至符合条件的行处

       w FILE:      将地址指定的范围内的行另存至指定的文件中;

       s/pattern/string/修饰符:

查找并替换,默认只替换每行中第一次被模式匹配到的字符串

                                   修饰符

                                          g: 全局替换

                                          i: 忽略字符大小写

       s///:s###, s@@@     

s参数的分割符石可以改变的,例如要匹配的字符串中有/而使用原本的/需要添加转义符,此时可以把分割符换位@或其他字符。

       模式串的引用:

                     方式1\(\)做匹配,使用\1, \2引用之前匹配到的模式。

                     方式2&引用模式匹配整个串。

5.sed练习

练习中使用user.txt,一下user.txt的内容:

sed工作原理和使用方法_第2张图片

1.输出user.txt中的第1行。

2.输出user.txt中的1到3行。 

3.输出第3行到最后一行。

sed工作原理和使用方法_第3张图片

4.使用正则表达式匹配er6结尾的行并输出

5.使用-e同时执行两段脚本,第一个为匹配到er6结尾的行,第二个为输出第1行。

                           

wKioL1SnwIWA0P6hAACwRB9pULQ364.jpg


6.删除1到5行。

sed工作原理和使用方法_第4张图片

7.把1到5行中的首个u替换为U,如果行中有多个u则需要‘1,5s/u/U/g'的g参数完成所有u的替换。

sed工作原理和使用方法_第5张图片

8.将匹配的第一个0-9的数字替换为空,实现删除数字的功能。第一条命令的最后一行没有删除是因为没有加g参数。

sed工作原理和使用方法_第6张图片

9.将/etc/passwd中的/sbin/nologin替换为/bin/bash。

wKiom1Snv8vg-dymAAA-SL75VYc416.jpg

10.将us字符和r[0-9]的位置替换。

sed工作原理和使用方法_第7张图片

11.在1到3行前插入look作为一行。

sed工作原理和使用方法_第8张图片

12.在1到3行后插入look作为一行。

sed工作原理和使用方法_第9张图片

13.在每行的行首添加字符串line-。

14.在每行的行尾添加-number。

sed工作原理和使用方法_第10张图片