文本处理三剑客:
grep,egrep,fgrep:文本过滤器
sed:stream editor,流编辑器,是一行一行处理的
awk :文本格式化工具,报告生成器
sed工作方式:它是读一行的文本内容复制到模式空间进行处理(不是在文本内处理的),符合sed模式的进行编辑,不符合的会标准输出来。
sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件, 简化对文件的反复操作, 编写转换程序等.
sed也可以一次性执行多行文本内容。
sed [OPTION]… ‘script’ [input-file]…
sed 选项(option) 地址命令
sed的选项
常用选项:
-n :不输出模式空间中的内容至屏幕;
-e script,–expression=script : 多点编辑;
-f / PATH/TO/SCRIPT_FILE : 从指定文件中读取编辑脚本
-r,–regexp-extended : 支持使用扩展正则表达式;
-i[SUFFIX], –in-place[=SUFFIX] :直接编辑原文件;(这个命令很危险,使用时需注意,可以先备份要编辑的文件,再使用 -i )
备份(sed -i.备份文件的后缀名 “地址命令” 文件名)
script: ' 地址命令'
地址定界:
1. 空地址:对全文进行处理;
2,单地址:
#:指定行;
/pattern/:被此模式所匹配到的每一行;
3,地址范围:
#,#;第几行到第几行
#,+#:第几行到从这行开始的以下几行
#,/pattern/:第几行到能被模式所匹配的哪一行之间所有行,
/pattern1/,/pattern2/ :
/ /为固定模式
4,步进:~
1-2:所有的奇数行
2-2:所有的偶数行
编辑命令
d:删除;
p:显示模式空间中的内容;
a \text:在行后面追加文本“text”,支持使用\n实现多行追加
i \text:在行前面插入文本“text”,支持使用\n实现多行插入
sed –n‘s/root/&superman/p’ /etc/passwd 在单词后增加
sed –n‘s/root/superman&/p’ /etc/passwd 在单词前增加
c \text:把匹配到的行替为此除换指定的文本“text”
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
r /PATH/FORM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
=: 为模式空间中的行打印行号
!: 模式空间中匹配行取反处理
s///(search 搜索) :查找替换, 支持使用其它分隔符,s@@@ ,s###(用搜索到的字符串用后面的字符串代替它)
替换标记:
g: 行内全局替换(使用s///查找替换时 ,加上g : s///g 时会把整行符合的字符串都替换,而不是只替换这一行搜索到的第一个符合的字符串)
p: 显示替换成功的行
w /PATH/TO/SOMEFILE :将替换成功的 行 保存至文件中
sed 高级编辑命令:
h: 把模式空间中的内容覆盖至保持空间中(1!G:如果不是第一行就执行把从保持空间
取出内容追加至模式空间, $!d : 如果不是最后一行就执行删除模式空间中的行)
H :把模式空间中的内容追加至保持空间中
g: 从保持空间取出数据覆盖至模式空间
G :从保持空间取出内容追加至模式空间
x: 把模式空间中的内容与保持空间中的内容进行互换
n: 读取匹配到的行的下一行覆盖至模式空间
N :追加匹配到的行的下一行至模式空间
d: 删除模式空间中的行
D :删除 当前模式空间开端至\n 的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed。
原创文章,作者:AN0519,如若转载,请注明出处:http://www.178linux.com/35211