Sed

作者: linux_python | 来源:发表于2019-08-14 19:38 被阅读0次

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 交换模式空间与保持空间的内容

相关文章

网友评论

      本文标题:Sed

      本文链接:https://www.haomeiwen.com/subject/nevrjctx.html