码迷,mamicode.com
首页 > 其他好文 > 详细

sed的用法总结

时间:2021-03-04 13:06:57      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:命令   bin   grid   sed的用法   实现   字符   sed -e   abc   sub   

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

sed的用法总结

标签:命令   bin   grid   sed的用法   实现   字符   sed -e   abc   sub   

原文地址:https://www.cnblogs.com/zhudaheng123/p/14474984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!