shell脚本day06-sed
Linux文本处理三剑客----sed
sed streanm edite
作为行编辑器,对文本进行编辑(以行为单位进行编辑)
注意:sed编辑文件,却不改变源文件
一、sed的工作原理
指定一个文本文件,一次读取文文件中每行的内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配(正则表达式),对匹配后的内容进行修改(替换、删除、修改、保存)
二、sed用法
选项:
-n
-r //指定使用扩展的正则表达式
匹配IP
1、所有的\都不要
2、|或者
-e script for while if
-f //指定脚本文件
-i 指定文本换行长度
-l 直接修改文件内容(建议不要使用)
地址定界方法:
1、直接匹配数值
sed -n '5,7p' 文件
2、d~步长
sed -n '1~3p' 文件
3、$指定步长
sed -n '10,$p' 文件
4、/正则/
/正则1/,/正则2/
sed -n '/o\{5\}/,$p' 文件名.sh
5.0,addr
addr 可以为数字/ $/正则
6.addr,+n
匹配addr行到addr后N行
sed -n '/fd.,+5p' as
三、常用命令
p print 打印(默认显示到屏幕) 建议和-n一起使用;
c替换行
d 删除 sed "1~3" as
n 读取/添加 模式匹配到的行的下一行内容,在对其进行操作
w 保存文件内容到一个新的文件
sed "/PATTERN/w 新文件名" 源文件名
sed "s/a/bb/gw /root/as2" as 只保留修改内容到新文件中
s 文本内容替换,默认替换模式空间匹配到第一项
语法格式:s/pattern/字符串
中间的斜杠可以替换为任意字符
sed"s/sf/aa" as
g globle sed "s/a/bb/g" as
\1\2和正则表达式的分组相同,实现反向引用;
指定某一个匹配项进行修改
& 调用前面匹配到的内容
grep "testbash" /etc/passwd | sed"s/^test.*/&er/g"