Sed文本编辑工具

概念

sed全名叫stream editor,流编辑器。用无交互式的方式来编辑文本

sed 命令的基本格式

sed [选项] ‘[动作指令]’ filename

选项:

-n 屏蔽默认输出。
-e 执行多个sed指令
-i 此选项会直接修改源文件,修改前建议先备份源文件。
-i.bak 编辑源文件的同时创造.bak的备份
-r 使用扩展的正则表达式

动作指令:

p 打印 ,输出指定的行 (print)
S 替换,替换指定字符串 (substitute)
d 删除,删除行 (delete)
a 增加行,在当前行下面插入文件 (add)
i 增加行,在当前行上面插入文件 (increase)
c 把选定的行改为新的指定的文本 (Change)
r 读取文件,即用于将一个独立文件的数据插入到当前数据流的指定位置 (read)
w 另存为
注意:搜索条件要使用“/…/”括起来。
例:打印(p指令)
sed -n “/betty/p” 1.txt 禁止默认输出,只打印找到betty的行
在这里插入图片描述
sed -n “2p” 1.txt 指定行号,查看第二行

例:替换(s指令)
格式:sed ‘s/要被替换的字串/新的字串/g’
sed ‘s/name/mz/g’ 1.txt 替换name为mz
sed ‘2s/hello/dog/’ 2.txt 替换第二行hello为dog
sed ‘2,5s/hello/dog/’ 2.txt 替换第2到5行hello为dog
2,¥s 2到结尾
sed ‘4s/^/#/g’ 2.txt 将第四行注释掉
sed ‘2,4s/hello//’ 2.txt 替换2-4行hello为空
ifconfig ens33 | grep “inet>” | sed -e 's/.inet //’ -e 's/net.//'sed 取得ens33ip地址
sed ‘s/hello/dog/;s/is/it/’ 2.txt 将hello替换为dog和is替换为it

删除行(d指令)
sed ‘d’ 2.txt 删除所有
sed ‘2d’ 2.txt 删除第二行
sed ‘2,5d’ 2.txt 删除第2-5行
sed ‘3,$d’ 2.txt 删除第3-结尾所有内容
sed ‘/hello/d’ 2.txt 删除带有hello的行

添加行(i指令和a指令)
命令i(insert插入),在指定行前面插入一行
sed ‘ni内容’2.txt 在第n行前插入内容
sed ‘2i123’ 2.txt 在第二行前插入123
命令a(append附加),在指定行后面添加一行
sed ‘na内容’ 2.txt 在第n行后插入内容
sed ‘3a123’ 2.txt 在第三行后插入123
$a内容 在末尾插入内容
==2,4 表示 2-4行 ==
sed ‘2,4i123’ 2.txt 在2-4行前插入123
插入多行数据,\代表未结束插入多行数据,\代表未结束

修改行(c指令)
c 命令表示将指定行中的所有内容,替换成该选项后面的字符串。
"c"动作是进行整行替换的,如果仅仅想替换行中的部分数据,就要使用"s"动作了
格式:c\用于替换的新文本
sed ‘2c\hello world’ 2.txt 将第二行替换成hello world
sed ‘/is/c\hello world’ 2.txt 将有is的行替换成hello world
sed ‘/SELINUX=disabled/c\SELINUX=enforcing’ /etc/selinux/config
将防火墙关闭,替换成开启

对文件的保存和读取
读取:r
格式为:[address]r filename
sed ‘1r /etc/hosts’ 2.txt 第1行下读取/etc/hosts内容
$r 末尾读取/etc/hosts内容
sed ‘/when/r /etc/hosts’ 2.txt 在带有when行下读取/etc/hosts内容
写入:w
sed -n ‘s/hello/nihao/w 2.txt’ 1.txt 将1.txt中更改的行写入2.txt
sed -n ‘/nihao/w 1.txt’ 2.txt 将2.txt中有你好的行写入1.txt

对原文件直接修改
-i选项:此选项会直接修改源文件
sed -i.bak ‘s/nihao/hello/’ 1.txt 将1.txt中你好改为hello,并备份原文件
-i.bak 编辑源文件的同时创造.bak的备份

去除行首数字
-r 使用扩展的正则表达式
+号前字符至少出现一次
sed -r ‘s/^【0-9】+//g’ 1.txt 将行首数字去除

其他
nl test.txt | sed -n ‘p;n’ 打印奇数行
nl test.txt | sed -n ‘n;p’ 打印偶数行
sed -n ‘/the/{=;p}’ test.txt 打印带the的行号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值