热门IT资讯网

文本编辑命令——sed

发表于:2024-11-26 作者:热门IT资讯网编辑
编辑最后更新 2024年11月26日,sed命令作为一种流编辑器,以行为单位对一个或多个文件进行编辑,在sed处理文本时,会将文本放到一个模式空间当中,如果当前行能够匹配sed命令所给出的PATTERN则用命令进行处理,如果不能匹配则默认

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///:查找替换,将文件中开头为#且后面有空格的匹配字符删去;


0