linux:sed命令使用

1.概念
sed全名叫stream editor,流编辑器。用无交互式的方式来编辑文本,sed处理数据前,需要先指定规则编辑数据,实现无交互的编辑数据,同时因为支持正则表达式作为参数。
2.处理过程
2.1.将正在运行的数据保存到临时缓冲去(内存)
2.2.在缓冲去进行处理,然后输出
2.3.输出完毕将缓冲删除,进行下一次的命令。
3.使用格式
[root@localhost ~]# sed [选项] ‘[动作指令]’ filename
选项
-n 默认情况下,sed 会在动作指令执行完毕后,自动输出处理后的内容,而该选项会屏蔽默认输出。
-e 执行多个sed指令
-i 此选项会直接修改源文件,要慎用,修改前建议先备份源文件。
-i.bak 编辑源文件的同时创造.bak的备份
-r 使用扩展的正则表达式
动作指令:
p 打印 ,输出指定的行
S 替换,替换指定字符串
d 删除,删除行
a 增加行,在当前行下面插入文件
i 增加行,在当前行上面插入文件
c 把选定的行改为新的指定的文本
r 读取文件,即用于将一个独立文件的数据插入到当前数据流的指定位置
w 另存为

命令的使用
p是查看的意思
默认输出所有行,日常使用加入准确数字输出行数。
在这里插入图片描述
图上2p是查看第二行,4,6p查看46 行,需要配合-n使用

s替换
格式:sed ‘s/要被替换的字串/新的字串/g’
例如:[root@localhost ~]# sed ‘s/hello/never/g’ test1.txt
s "替换"命令
/…/…/ 分割符 (Delimiter)
hello 搜索字符串(要被替换的字符串)
never 替换字符串(新的字符串)

[root@localhost ~]# sed ‘s/hello/never/2’ test1.txt //只替换每行出现的第二个词
[root@localhost ~]# sed ‘s/hello/never/g’ test1.txt //全局替换
按行查找替换
[root@localhost ~]# sed ‘2s/never/dog/’ test2.txt
进行替换第二行,以此类推,输入数字确定行数
多行替换
[root@localhost ~]# sed ‘3,$s/better/saying/’ test3.txt
进行替换第三行和最后一行
驱动ens33网卡ip地址
在这里插入图片描述
多个命令使用
[root@localhost ~]# sed ‘s/never/@@/;s/cat/dog/’ test2.txt //第一种用“;”分隔多个sed操作指令。
也可以用-e进行,建议用-e

删除行(d指令)
默认d全部删除
[root@localhost ~]# sed ‘2d’ test1.txt //指定行号删除
可以加入行号进行指定删除
注:在此强调,在默认情况下 sed 并不会修改原始文件,这里被删除的行只是从 sed 的输出中消失了,原始文件没做任何改变

添加行(i和a)
例1:插入
将一个新行插入到文件的第三行前,执行命令如下:
在这里插入图片描述
例2:追加
将一个新行附加到文件的第三行后,执行命令如下:在这里插入图片描述
i是加入到行号的前面,a是行好的后面,类似于vim中的O和o的区

在第2行到第4行后分别添加一新行(即在2,3,4行后分别插入)在这里插入图片描述
可以加入多个行数,只需要同时指定多个行数,参考上图

修改行指令(c)用于替换新的文本

[root@localhost ~]# cat test1.txt
it is hello too old to learn
it is hello too hello to learn never
when the cat is away,the mice will play
no cross,no crown
[root@localhost ~]# sed ‘2,$c\hello world’ test1.txt
it is hello too old to learn
hello world

此命令和s替换相似,不同的是替换的是整个行数,上述命令是替换第二行和最后一行,整体替换成hello world’

对文件的保存和读取
r是将整个独立的文件数据插入到当掐你文件的指定位置
格式:sed ‘r/文件名’ 当前指定文件名
在这里插入图片描述
使用时候,r前面加入数字是指行数,图上是将/etc/hosts文件内容插入test1.txt的文件中,可以配合$^等符合加入行首或者行末。

使用时候,r前面加入数字是指行数,图上是将/etc/hosts文件内容插入test1.txt的文件中,可以配合$^等符合加入行首或者行末。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值