前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

sed

作者头像
陳斯托洛夫斯記
发布2022-10-27 14:34:21
4670
发布2022-10-27 14:34:21
举报
文章被收录于专栏:XBD

语法

代码语言:javascript
复制
sed [option] 'script' FILENAME

option:
	-n:不往屏幕上打印模式空间中的内容
	-e:多点编辑
	-f /PATH/FILENAME:从指定文件中读取脚本
	-r:支持使用扩展正则表达式
	-i.bak:编辑文件之前先备份

script:
	'地址命令'

option

选项 -n

有一个test文件,文件内容如下:

打印这个文件的第二行

会发现第二行输出了两行,是因为sed是按行处理的,每处理一行就存储到模式空间中,sed把模式空间的内容全都输出了,我们又用2p打印了第二行,所以就会出现上图中的内容,如果我们不输出模式空间中的内容,只输出我们指定的行,应该怎么做呢?加上-n参数即可

选项 -e

如果想输出第二行和第五行的内容,可以多次指定-e参数

选项 -f

如果脚本(就是引号中的)比较多,可以把这些脚本写到一个文件中,每行一个

把2p(打印第二行)和4p(打印第四行)写到script文件中,使用sed -f指定脚本名

选项 -i.bak

代码语言:javascript
复制
sed -i.bak '/pattern/' FILENAME		# 在修改文件之前,先备份,在修改,备份文件名为 FILENAME.bak

script

地址

不写地址
代码语言:javascript
复制
如果省略地址,处理文件中的所有行
单地址
代码语言:javascript
复制
# 		# 行号,指定的行
$		# 最后一行
/pattern/	# 能够被正则表达式匹配到的每一行
地址范围
代码语言:javascript
复制
#,#			# 行号,第几行到第几行
#,+#			# 比如10,+20,就是10到10+20行
/pattern1/,/pattern2/	# 从满足pattern1模式开始,到满足pattern2模式结束
#,/pattern1/		# 从第#行开始,到满足pattern1模式结束
步长
代码语言:javascript
复制
1~2			# 从第一行开始,步长为2,就是奇数行
2~2			# 从第二行开始,步长为2,就是偶数行

命令

代码语言:javascript
复制
d			# 删除模式空间匹配到的行
p			# 打印当前模式空间的内容
!			# 模式空间的行取反
abb			# 追加,在指定的行后面追加文本
ibb			# 追加,在指定的行前面追加文本
cbb			# 替换
w /PATH/FILENAME	# 保存模式匹配的行到指定的文件
r /PATH/FILENAME	# 从指定的文件中读取内容到模式空间中匹配到的行后面
命令 d

删除模式空间的第2行,打印其他行

命令 !

要把!号放在行号后面

命令 a

从第一行到第五行,每一行后面都追加“+++”

命令 i

在指定的行前面追加文本内容

命令 c

使用指定的文本内容替换指定的行

命令 w

我们把test文件中的第一行到第三行的内容,保存到/tmp/test01文件中

命令 r

我们把/tmp/test01文件中的内容读取出来,插入到第二行的后面

替换

代码语言:javascript
复制
s///:查找替换,还可以用其分隔符,如s@@@,s###
替换标记:
	g:行内全局替换
	p:显示替换成功的行
	w /PATH/FILENAME:把替换成功的行保存到文件中
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语法
    • option
      • 选项 -n
      • 选项 -e
      • 选项 -f
      • 选项 -i.bak
    • script
      • 地址
      • 命令
      • 命令 a
      • 命令 i
      • 命令 c
      • 命令 w
      • 命令 r
    • 替换
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档