Sed
2019-08-14 本文已影响0人
linux_python
sed 是一种在线的非交互的编译器,它一次处理一行的内容。处理时,把当前处理的行储存在临时缓冲区中,称为模式空间,接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向储存输出。
sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
用法 sed + 命令 +目录/文件1 目录/文件2
sed支持正则表达式
使用基本元字符集 ^, $, ., *, [], [^], < >,(),{}
使用扩展元字符集 ?, +, { }, |, ( )使用扩展元字符的方式:
sed -r
基本用法
sed -r ' ' mypasswd
sed -r ' p ' mypasswd
屏蔽默认输出使用 -n选项
sed -rn ' p ' mypasswd
sed -rn ' /root/p ' mypasswd 显示root的行 ^匹配root开头 ^root
探索替换*(重要)
sed会自动打印文件的每一行, 查找模式匹配的行,找到后执行后面的命令,默认是输出(不加-n)
sed -r ' s/root/shark/ ' mypasswd
搜索每一行,找到有root的,只替换第一个
sed -r ' s/root/shark/g ' mypasswd
搜索每一行,找到有root的进行全局替换
sed -r ' s/root/shark/gi ' mypasswd
i 同时忽略大小写
sed -r ' /root/d ' mypasswd
找到含有root的进行删除
删除命令拓展
sed -r 'd' mypasswd
全部分删除
sed -r ' 3 d '
删除第三行
sed -r ' 1,3 d '
第一行到第三行都删除
sed -r ' /root/ d '
含有root的字符串删除
sed -r ' /root/,5 d '
从含有root字符串的行开始,一直到第5行进行删除
sed -r ' /^adm/,20 d '
从行首是adm 的行开始,一直到20行进行删除
sed -r ' /^adm/ ,+2 d '
从行首是adm的行,以及此后两行的进行删除
sed -r ' /root/ !d '
含有root的行不删除,其他都删除
sed -r ' 1~2 d '
奇数行删除,其实就是匹配到行号除以2,余数是1的行
sed -rn ' 0~2 p '
偶数行打印
sed参数大全
a 在当前行后添加一行或多行
c 用新文本修改(替换)当前行中的文本
d 删除行
i 在当前行之前插入文本
l 列出非打印字符
p 打印行
n 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理
q 结束或退出sed
! 对所选行以外的所有行应用命令
s 用一个字符串替换另一个
s 替换标志
g 全局替换
i 忽略大小写
r 从文件中读
w 将行写入文件
y 将字符转换为另一字符(不支持正则表达式)
h 清除保持空间的内容后,把模式空间里的内容复制到保持空间
H 把模式空间里的内容追加到保持空间
g 清除模式空间的内容后, 取出保持空间的内容,并复制到模式空间
G 取出保持空间的内容,追加在模式空间原有内容的后面
x 交换模式空间与保持空间的内容