其他分享
首页 > 其他分享> > sed的用法总结

sed的用法总结

作者:互联网

sed -n '1p' input #打印input文件的第一行
sed '1p' input #不仅打印文件第一行,还打印文件的输出内容
sed -n '3,6p' input #搜索input文件第3~6行的文件
sed -n '/certificate/p' input #搜索input文件certificate字符串,输出到屏幕
sed -n -e '/certificate/p' -e '/certificate/=' input
带多个编辑命令的sed的一般格式为:
sed [选项] -e 编辑命令1 -e 编辑命令2 -e 编辑命令3 输入文件

sed '指定地址/a\text' 输入文件
sed '/<time.h>/a\#include<stdlib.h>' test.c
#在test.c 的字符串<time.h>后加一行#include<stdlib.h>

写第一个sed添加脚本
vi append.sed
#/bin/sed -f
/#include <stdio.h>/a\
daheng....

chmod 777 append.sed

./append.sed test.c #在test.c里面 #include <stdio.h> 这一行后加daheng....

sed 匹配转义符.需要 \,如下:
sed -n '/\./p' test.c
$在正则表达式中表示行尾,在sed中表示最后一行。
sed 匹配最后一行命令如下:
sed -n '$p' test.c
sed -n '$'p input
sed -n '/.*bus/p' input

!表示取反 x, y!表示匹配不在x和y行号范围内的行,如下:
sed -n '2,10!p' test
用行号与关键字匹配限定范围
sed -n '/seugrid/, $p' test.c #打印与seugrid的匹配行到最后一行的内容
sed -n '3, /seugrid/p' test.c #打印第三行到与seugrid的匹配行

sed 插入文本
vi insert.sed
#!/bin/sed -f
/#include <stdio.h>/i\
we insert a new line\
we insert another new line.

chmod 777 insert.sed
./insert.sed test.c

sed 修改文本
vi modify.sed
#!/bin/sed -f
/we insert a new line/c\
we modify this line.

chmod 777 modify.sed
./modify.sed test.c

sed 删除脚本
sed '1d' test.c #删除test.c里的第一行
sed '$d' test.c #删除test.c里的最后一行

sed '1,10d' test.c #删除test.c里的第一行到第10行
sed '5,$d' test.c #删除test.c里的第5行到最后一行

sed 文本删除如下:
vi delete.sed
#/bin/sed -f
/[Cc][Ee][Rr][Tt][Ii][Ff][Ii][Cc][Aa][Tt][Ee]/d

chmod 777 delete.sed
./delete test.c

sed替换
sed 's/Certificate/CERTIFICATE' test.c #默认情况下,打印全部输入文件内容
sed -n 's/Certificate/CERTIFICATE/p' test.c #-n与-p选项结合,只打印替换行
sed -n 's/Certificate/CERTIFICATE/' test.c #不打印任何内容

sed -n 's/Certificate/CERTIFICATE/pg' test.c #不加-g时,替换概行的第一处,就跳到下面的匹配行, 加-g时,该行都匹配
sed -n 's/seu/njue/2p' test.c #替换第二次seu所匹配的关键字
sed -n 's/seu/njue/3p' test.c #替换第三次seu所匹配的关键字

sed w选项, 将结果写到一个新文件下
sed -n 's/seu/njue/w output' test.c

sed &, &可以用于表示被替换的字符
sed -n 's/seu/(&)/pg' test.c 和下面的意思一样
sed -n 's/seu/(seu)/pg' test.c

sed 写入新文件
sed -n '1,5 w output' test.c
sed -n '/globus/w output' test.c #将与globus关键字相匹配的行写入output文件
sed '/certificate/r output' test.c #将output文件中读出来,加到test文件中certificate行的下面

sed 退出命令
sed '5 q' test.c
sed -n '/.r.*/p' test.c #匹配/.r.*/的字符串
sed -n '/.r.*/q' test.c #匹配/.r.*/的字符串,找到第一个后就退出

sed 变换命令
sed 'y/12345/ABCDE' test.c 将test.c里面1变成A,2变成B,3变成C,4变成D, 5变成E.
sed 'y/fmj/FMJF' test.c #错误,变换序列和被变换的字符序列要等长

sed -n '1,$1' control sed显示控制字符

sed {} "{}"指定在定位行所执行的命令组

sed -n -e '/Certificate/p' -e '/Certificate/=' input 与下面的命令等价
sed -n '/Certificate/{p;=}' input
sed '/Cerfificate/{s/i/I/g;s/le/99;}' test.c
#上述命令在与Certificate匹配的关键行,将全部的i替换成I, 将第一个le替换成99

sed 编辑命令n的用法如下:
sed 'certificate/{n;s/ll/99/;}' input ,找到certificate关键字的行匹配,然后
执行匹配行的下一行,将ll替换为99(如果行10行匹配,则执行11行进行替换)

sed -e 'Subject/h' -e 'seugrid/x' -e '$G' input
第一步,匹配Subject写入保持缓冲区
第二步,匹配seugrid,写入保持缓冲区,并将原来的保持缓冲区内容输出,
"$G"将保持缓冲区的内容追加到模式缓冲区中的最后一行,$表示最后一行。
x命令是互换模式缓冲区与保持缓冲区的文本内容,如果将x必为H,即如下:
sed -e 'Subject/h' -e 'seugrid/H' -e '$G' input
输出结果为找到的Subject的这行与seugrid这行都加在了最后一行

sed 利用分号实现多个编辑命令
sed 's/globus/GLOBUS/; s/seugrid/SEUGRID' input
sed 按Enter进入二级命令
> s/globus/GLOBUS/
> s/seugrid/SEUGRID/
> $d input

标签:总结,seu,匹配,用法,sed,test,input,seugrid
来源: https://www.cnblogs.com/zhudaheng123/p/14474984.html