首页 > 代码库 > sed工作原理和使用方法
sed工作原理和使用方法
1.Sed简介
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
sed工作原理图
2.命令说明
sed [options] ‘AddressCommand‘ file ...
-n: 静默模式,不再默认显示模式空间中的内容
-i: 直接修改原文件
-e SCRIPT -e SCRIPT:可以同时执行多个脚本
-f 引用编辑好的sed脚本
-r: 表示使用扩展正则表达式
3.Address寻址
1、StartLine,EndLine 指定开始和结束行
1,100 表示从1到100行
2、/RegExp/ 使用正则表达式
/^root/
3、/pattern1/,/pattern2/ 模式匹配锁定范围
第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
4、LineNumber
指定的行
5、StartLine, +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的内容:
1.输出user.txt中的第1行。
2.输出user.txt中的1到3行。
3.输出第3行到最后一行。
4.使用正则表达式匹配er6结尾的行并输出
5.使用-e同时执行两段脚本,第一个为匹配到er6结尾的行,第二个为输出第1行。
6.删除1到5行。
7.把1到5行中的首个u替换为U,如果行中有多个u则需要‘1,5s/u/U/g‘的g参数完成所有u的替换。
8.将匹配的第一个0-9的数字替换为空,实现删除数字的功能。第一条命令的最后一行没有删除是因为没有加g参数。
9.将/etc/passwd中的/sbin/nologin替换为/bin/bash。
10.将us字符和r[0-9]的位置替换。
11.在1到3行前插入look作为一行。
12.在1到3行后插入look作为一行。
13.在每行的行首添加字符串line-。
14.在每行的行尾添加-number。
sed工作原理和使用方法