0
点赞
收藏
分享

微信扫一扫

linux 流编辑器sed

炽凤亮尧 2022-03-22 阅读 50

sed简介

  • sed工作流程
    1、sed是一种在线、非交互式的编辑器,他一次处理一行内容,处理时,吧当前处理的行存储在临时缓冲区中:缓冲区叫模式空间 pattern space
    2、然后sed命令处理缓冲区中的内容,处理完成后,在推动到屏幕。如此一行处理完成后再处理下一行,直到文件末尾。
    3、文件内容并没有改变,除非使用重定向存储回去
  • 命令格式
  • 支持正则表达式
    1、基本元字符集:^ $ . * [] [^] \< \> \( \) \{ \}
    2、扩展元字符: ? + { } | ( )
    1、使用扩展元字符方式:sed -r
  • 简单使用了解sed
sed -r 'p' /etc/passwd				# p表示打印,读取一行打印一行
sed -r -n '' /etc/passwd			# n表示静默的方式,单纯的执行p,所以n p 一般一起使用
sed -r -n '/root/p' /etc/passwd		#打印有root的行
sed -r -n '/root/=' /etc/passwd		#打印有root的行号
  • 查找替换
sed -r 's/root/admin/' /etc/passwd			# s表示产找所有行,读取一行内容到模式空间中,然后替换
sed -r 's/root/admin/g' /etc/passwd			# g表示全局,一行中可以多次匹配
sed -r 's/root/admin/gi' /etc/passwd		# i表示忽略大小写

sed -r '/root/d' /etc/passwd				# d表示模式空间中删除匹配到的行,未匹配到的行输出
  • 按行号操作
sed -r '1,3d' passwd					#删除1~3行
sed -r '/^root/,5d' /etc/passwd			#匹配以root开始,删除到第5行
sed -r '/^root/,+5d' /etc/passwd		#从root开始的,连删5行
										# 这里可以sed -rn '/^root/,5p' /etc/passwd	用于打印,对于日志查找比较实用
sed -r '/root/!d' /etc/passwd			#除了root匹配到的行,都删除
sed -r '1~2d' /etc/passwd				#从1行开始,间隔两行删除,即删除奇数行

sed命令/选项

  • 命令
命令功能案例
a 在当前行后添加一行或多行sed -r ‘2a111’ passwd; sed -r ‘s/root/a111’ passwd
c 用新的文本修改(替换)当前行中的文本sed -r ‘2c111’ passwd; sed -r ‘s/root/c111’ passwd
d 删除行
i 在当前行之前插入文本sed -r ‘2i111’ passwd; sed -r ‘s/root/c111’
l列出非打印字符
p打印行
n从当前行的下一行处理sed -r ‘/root/{n;d}’ /etc/passwd
对选中行以外的所有行应用命令sed -r ‘s/root/!c111’
s 查询标志
g 在行内全局替换sed -r ‘s/root/admin/g’ /etc/passwd
i 忽略大小写sed -r ‘s/root/admin/gi’ /etc/passwd
r 从文件中读取sed -r ‘/root/r /etc/mydata’ /etc/passwd ;将mydata读取到匹配到root的行,行后追加
w 将行写入文件sed -r ‘/root/w /etc/mydata’ /etc/passwd; 源文件mydata内容被覆盖
h 把模式空间里的内容复制到暂存缓冲区(覆盖)
H 把模式空间里的内容复制到暂存缓冲区(追加)
g 取出暂存换从去的内容,将器复制到模式空间(覆盖)
G 取出暂存换从去的内容,将器复制到模式空间(追加)
x 交换暂存缓冲区与模式空间的内容
  • 选项
选项功能
-e 允许多项编辑
-f指定sed脚本文件名
-n 取消默认的输出,静默输出
-i inplace 修改源文件内容
-r 支持扩展元字符

模式空间、暂存空间使用案例

#默认情况下,暂存空间里面时一个换行符(空行)
sed -r 'g' file						#处理第一行时,从暂存空间拿来一个换行符覆盖,第二行以此类推
sed -r 'G' file						#处理第一行时,从暂存空间拿来一个换行符追加,追加一个空行,第二行以此类推

sed -r '/root/h'
举报

相关推荐

0 条评论