您的位置:首页 > 运维架构 > Linux

linux学习之sed、awk

2015-09-24 23:01 591 查看
linux学习之sed、awk

Ⅰ、sed
sed:stream editor 流编辑器,是用来查找替换删除文件中特定对象的。
工作机制:每次读取一行文本到“模式空间[pattern space]”中,在模式空间中完成处理;然后将处理的结果输出或者保存;

1、 语法:
sed [OPTTION]....{script} [input filename]...
[OPTTION] 选项:
-r:表示支持扩展正则表达式
-n:表示支持静默模式
-e script1 -e script2 ... 可以指定多个script
-i:直接修改源文件
-f /path/to/filename:从指定的路径读取script运行
sed支持基本正则表达式,其元字符有
字符匹配:.,[],[^]
次数匹配:*,\?,\+,\{m\},\{m,n\}
位置锚定:^,$,\<,\>
分组及引用:\(\),\1,\2,......
多选一:x|y|z

2、 sed的script内容包括地址定界和编辑命令
地址定界
#:指定行
$:最后一行
/regexp/:任何能被regexp匹配到的行
\%regexp%:表示任何能被regexp匹配到的行,\只是对%做转义使用的
/regexp/|:表示在匹配中忽略大小写,
\%regexp%|:表示的意思同上,\只是对%做转义使用的
startline,endline:表示在开始行和结束行之间的内容作匹配; 有以下几种特殊情况
#,/regexp/:从第#行开始,到第一次匹配到regexp的行
x,y:从第x行到第y行
/regexp1/,/regexp2/:表示从第一次被regexp1匹配到的行,到第一次被regexp2匹配到的行
x,+y;表示从x行开始,到下面的x+y行
first`step:表示从指定行开始,以step步进行数递增的所有行

编辑命令:
d:删除模式空间中的行
=:显示行号
a \text:在匹配到的地方附加text
i \text:插入text,支持多行插入
c \text:用text替换匹配到的行
p:打印模式空间中的行
s /regexp/sometext/:将匹配到的内容替换为sometext;q可以支持全局替换
w /path/to/filename:另存为filename的文件
r /path/from/filename:在文件的指定位置插入另一个文件的内容。

3、高级命令

h:用模式空间中的内容覆盖保持空间的内容;
H:把模式空间中的内容追加至保持空间中内容的后面;
g:从保持空间中取到其内容,并将其覆盖模式空间中的内容;
G:从保持空间中取到其内容,并将其追加在模式空间中的内容的后面;
x:把保持空间和模式空间中的进行交换;
n:读取匹配到的行的下一行至模式空间;(会覆盖模式空间中的原有内容);
N:读取匹配到的行的下一行至模式空间,追加在模式空间中原有内容的后面;
d:删除模式空间中的内容;
D:删除多行模式空间中的首行;

注意:命令功能可使用!取反;分号可用于分隔脚本;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息