Sed是一个流式文本编辑器,输入一个文本文件内容,sed通过命令可以对文本进行详细的操作,包括
ü 字符替换
ü 打印带字符的行
ü 打印不带xx字符的行
ü 删除对应行号的行
ü 对应行后增加内容
ü 对应行前增加内容
ü 行替换
等;
处理原理说明:
Sed从文件中每次读取一行内容到缓存中(叫临时存储或者匹配空间),处理完成后,再输出到屏幕,不会修改原始内容;从到临时存储的内容,除非使用了删除命令d和不打印临时区-n,所有内容都会输送到屏幕打印;
命令说明:
Sed 命令选项... 脚本文件 输入文件
命令选项:
-n:
不打印匹配的内容
-e script
指定脚本命令
-f script-file
指定执行脚本文件
--help
显示帮助信息
-V
显示版本号
动作说明:
a\
在匹配的行后面增加新行内容
示例:[root@localhost test]# sed '/eeee/a\beatifull' testsed2
c\
再匹配的行修改为目标行内容
示例:[root@localhost test]# sed '/eeee/a\beatifull' testsed2
d
删除匹配行
示例:[root@localhosttest]# sed '/eeee/d' testsed2
i\
在匹配行内容前面增加内容
示例:[root@localhost test]# sed '/eeee/i\beatifull' testsed2
p
打印行
q
退出
r
从文件读取行
!
匹配行之外行
s
替换
常见示例:
命令 | 描述 |
sed –n '/sentimental/p' filex | 打印filex文件内容包含sentimental的行 |
sed '1,3d' filex > newfilex | 从文件filex中删除第1行到第三行,剩余内容重定向到newfilex中 |
sed '/[Dd]aniel/d' filex | 从文件filex中删除包含daniel或者Daniel行; |
sed –n '15,20p' filex | 打印文件filex 15行到20行 |
sed '1,10s/Montana/MT/g' filex | 从第1行到第10行把包含Montana的字符替换为MT |
sed '/March/\!d' filex (csh) | 把不不包含March的行都删除掉,csh和sh语法有些差异; |
sed '/report/s/5/8/' filex | 把包含report字符的行第1个出现的字符修改为8 |
sed 's/....//' filex | 删除每行前4个字符 |
sed 's/...$//' filex | 删除每行最后3个字符 |
sed '/east/,/west/s/North/South/' filex | 所有落于east到west之间的行,都把 North替换为South字符 |
sed –n '/Time off/w timefile' filex | 把文件filex中包含Time off的行都写入到timefile |
sed 's/\([Oo]ccur\)ence/\1rence/' file | 把 Occurence或者occurence替换成Occurrence 或者occurrence. |