Skip to content

Latest commit

 

History

History
113 lines (56 loc) · 3.61 KB

File metadata and controls

113 lines (56 loc) · 3.61 KB

SED

sed是Linux三剑客之一。

​ Sed是一种非交互式的流编辑器,可动态编辑文件;流编辑器则会在编辑器处理数据之前基于预先提供的一组 规则来编辑数据流 。

​ Sed本身是一个管道命令,可以分析 standard input 的,主要是用来分析关键字的使用、统计等,此外还可 以将数据进行替换、删除、选中、选取特定行等功能

1.sed -[]常用的参数及其作用:

-n :安静模式。在sed的一般用法中,所有来自文件中的数据都会被列出到屏幕上,如果加上-n,则只有经过sed特殊处理的那行(或操作)才会被列出来。

-e :直接下命令行模式上进行sed的动作编辑。

-f :直接将sed的动作写在一个文件内,-f filename 则可以执行file内的sed动作。

-r :sed的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式的语法)。

-i :可直接对源文件内容进行修改。。危险操作

-h或–help:显示帮助;

-V或–version:显示版本信息

2.function有下面这些参数

i :插入,在目标行的上面新增一行。

a :插入,在目标行的下面新增一行。

d :删除所选行。

p :打印,也就是将某个选择的数据打印出来,通常参数-p与参数-n搭配使用。

s :替换,可以直接进行替换的工作。

c :替换,c的后面可以接替字符串,这些字符串可以替换n1,n2之间的行。

w :写并追加模板块到file末尾。

W : 写并追加模板块的第一行到file末尾。

! :表示后面的命令对所有没有被选定的行发生作用。

= :打印当前行号; # 把注释扩展到下一个换行符以前。

以上参数皆不改变原文件内容

3.sed替换标记

g :表示行内全面替换;

x: 表示互换模板块中的文本和缓冲区中的文本;

y :表示把一个字符翻译为另外的字符(但是不用于正则表达式);

\1: 子串匹配标记;

& :已匹配字符串标记;

4.sed元字符集

^ 匹配行开始,如:/^ sed/匹配所有以sed开头的行

$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行;

.: 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,后是d;

*:匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行;

[] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed;

[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行;

\ (…\ ) 匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替换成lovers;

& 保存搜索字符用来替换其他字符,如s/love/&/,love这成love;

< 匹配单词的开始,如:/\

\> 匹配单词的结束,如/love>/匹配包含以love结尾的单词的行;

x{m} 重复字符x,m次,如:/0{5}/匹配包含5个0的行;

x{m,} 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行; x{m,n} 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行;

END 链接