首页 > 代码库 > 文本编辑命令——sed
文本编辑命令——sed
sed命令作为一种流编辑器,以行为单位对一个或多个文件进行编辑,在sed处理文本时,会将文本放到一个模式空间当中,如果当前行能够匹配sed命令所给出的PATTERN则用命令进行处理,如果不能匹配则默认情况下标准输出;文件内容默认情况下不会改变;
sed命令:
sed [OPTION]...‘script’ [input-file]...
常用选项:
-n:安静模式,默认不匹配的行不输出到屏幕上;
-e script:多条件输出,一个e选项可以配合一个script;
-i:将修改的内容直接写进原文件;
-r:支持扩展的正则表达式;
script由两部分组成:Address与Command两者之间不能有空格存在;即AddressCommand;
Address:
1.当地值为空时则表示对当前所有文件进行操作;
2.单地址,指定行号num时,只对当前行进行操作,或者/PATTERN/指能够匹配该模式的第一行,对该行进行操作;
3.地址范围:
①addr1,addr2:从addr1开始到addr2结束的中间所有行,包括addr1和addr2;
②first~step:由标记first开始到step为止;
③add1,+N:由add1行开始,并计算向后N行;
④addr1,~N:从addr1开始,包括addr1所在行,向后计算addr1*N行;
例如:2,~5相当于2,2*5
⑤/PATTERN1/,/PATTERN2/
从被pattern1匹配的第一行开始计算,一直到被pattern2匹配的第一行结束;
Command:
=:先是被模式匹配行的行号;
a \test:在所匹配行的下一行添加test文本,支持使用\n选项;
i \test:在所匹配行的上一行添加test文本,支持使用\n选项;
c \test:将所匹配行用test进行替换,支持使用\n选项;
d:将在模式空间中匹配的行删除,不在显示输出,d选项通常不搭配-n选项;
p:将在模式空间匹配的行输出,p选项通常搭配-n选项;
w filepath:被能够匹配的行另存到一个文件里去;
r filepath:将filepath中的内容追加到模式空间中被模式匹配的行之后;
!COMMAND:在模式空间中匹配的行不输出,不匹配的行输出;
s///:查找替换,“/”可以随意分配三个一模一样的符号,视情况而定;
s/pattern/text/[control]
pattern:计划查找并替换内容;
text:要替换的结果
control:如何进行替换;
g:行内全部替换;
p:显示替换成功的行;
如
s@/etc/fstab@/etc/mtab@:将字符/etc/fstab替换为/etc/mtab;
sed命令示范:
加-n与不加-n:采用指定单地址的方式
-e:
-r:取出当前路径的基名,用基民替换当前路径
-i:将修改写入文件;
采用多地址方式:add1,add2
add1,+N
/PATTERN/,/PATTERN/匹配:
p:将在模式空间匹配的行输出;加-n与不加-n;
d:删除模式空间匹配的行;d选项的使用不加-n;
w file:将模式匹配的内容保存到另一个文件当中;
s///:查找替换,将文件中开头为#且后面有空格的匹配字符删去;
文本编辑命令——sed