1. sed
sed是以行为单位的非交互式编辑器,从通过标准输入或文件获得要处理的输入文本,对指定的行进行逐行处理,然后将结果输出传送到标准输出或文件。
sed:非交互式模式文本文件编辑器。
awk:带有C语言格式语法的模式处理语言,以字段为单位。
[地址范围]/p 显示指定的地址范围
[地址范围]/d 删除指定的地址范围
s/pattern1/pattern2/ 将行中首次出现的pattern1替换为pattern2
[地址范围]/s/pattern1/pattern2/ 将地址范围内的行中首次出现的pattern1替换为pattern2
[地址范围]/y/pattern1/pattern2/ 将地址范围内任何位于pattern1的字符变更为pattern2位置上的字符
g 在所有行启动输入内容匹配的模式
2. sed工作原理
sed编辑器在一个文件或1个输入中每次只能处理1行并显示到显示器。该命令在vi编辑器中也可以使用,在称为“模式空间”的临时缓冲处理已保存的行。每次处理完临时缓冲的行,该行就传到显示器。结束行处理后,就会从临时缓冲删除,接着读取并处理下一行,然后显示出来。输入文件的最后一行处理完成后就终止sed命令。保存于临时缓冲的每行都要被处理,所以原文件不会被更改或损坏。
3.sed正则表达式的使用
^ 行首
$ 行尾
. 匹配1个字符,但newline字符除外
* 匹配0或0个以上的字符串
[] 匹配括号中任意1个字符
[^] 不匹配括号内任何字符
\(..\) 保存匹配的字符
& 保存可以记忆为替换字符串的检索字符串
\< 词首
\> 词尾
x\{m\} 将x字符重复次数设置为m
x\{m,\} 至少重复m次
x\{m,n\} 重复m~n次之间
[qwe@localhost aaa]$ sed -n '/^I/p' rregular //显示以I开头的行
I love you I LOVE YOU
Iooooooooove you
[qwe@localhost aaa]$ sed -n '/love/p' rregular //显示包含love的行
I love you I LOVE YOU