skyfans之每天一个Liunx命令系列之四十六:sed

今天我们继续来学习每天一个命令,今天我们继续学习章节内容:查找类命令(SEARCH),这章里将包括我们运维常用的三剑客内容,今天学习的是什么命令呢,那就是sed(文本处理工具)。

sed --help

在这里插入图片描述
-n 禁止自动打印图案空间
-e 将脚本添加到要执行的命令中
-f 将脚本文件的内容添加到要执行的命令中
-i 直接进行编辑文件(如果编辑文件时代后缀名,则进行备份文件)
-c 在-i模式下整理文件时使用复制而不是重命名
-b 以二进制模式打开文件
-l 为“l”命令指定所需的换行长度
-r 在脚本中使用扩展正则表达式
-s 将文件视为独立的,而不是单个连续的内容。
-u 从输入文件加载最少数量的数据,并更频繁地刷新输出缓冲区
-z 按nul字符进行分隔行
————————————————华丽的分割线————————————

sed元字符集内容:
^ 匹配行开始
$ 匹配行结束
.  匹配一个非换行符的任意字符
* 匹配0个或多个字符
[] 匹配一个指定范围内的字符
[^] 匹配一个不再指定范围内的字符
& 保存搜索字符串,用来替换其他
\<  匹配单词的开始
\>  匹配单词的结束

————————————————华丽的分割线————————————
好开始内容测试,为了方便测试,我们先创建一个供测试使用的文件
vi sedtest1.txt,编辑如下内容

vi sedtest1.txt

在这里插入图片描述
然后我们把这个文件复制4份。
在这里插入图片描述

为了先使文件里的内容规整下,我们先讲关于删除类的命令

1.删除

1.1.删除空白行

sed '/^$/d'  sedtest1.txt

在这里插入图片描述
我们来查看下文件是否已经修改

cat sedtest1.txt

在这里插入图片描述
咦?文件怎么没有修改呢?还记得我们之前的参数吗?直接对文件进行修改需要添加参数是什么来着?对是-i的。

sed -i '/^$/d' sedtest1.txt

在这里插入图片描述
看到了吧,文件已经成功修改。也就是说,在使用sed的删除命令时,如果不加-i参数的话,只是当前显示的内容删除了,而并未进行文件的修改操作!!!好,那为了演示效果,我们后面就直接对文件动手了!!!!

1.2删除指定的行数

我们先按行数显示查看文件内容

cat -n sedtest1.txt

在这里插入图片描述

1.2.1 删除第四行内容

sed -i '4d' sedtest1.txt

再次查看文件内容

cat -n sedtest1.txt

在这里插入图片描述
我们发现原来的第四行11111已经被删除了。

1.2.2 删除最后一行

目前的最后一行是ccc内容

sed -i '$d' sedtest1.txt

然后查看文件

cat sedtest1.txt

在这里插入图片描述
已经成功删除了最后一行的内容。

1.2.3 删除第五行到第七行的内容(注意第一个数字代表从第几行开始!)

sed -i '5,$d' sedtest1.txt

查看执行结果

cat -n sedtest1.txt

在这里插入图片描述

1.2.4 删除指定内容的行

删除文件中所有开头内容是22的行

sed -i '^22/' d sedtest1.txt

查看处理后的文件情况:

cat sedtest1.txt

在这里插入图片描述
好,第一个文件就玩到这里!!!!

2.替换操作

这次我们来玩第二个文件,第一个文件已经被玩坏了,哈哈!
在这里插入图片描述

2.1替换文件里的3为8(只匹配替换查找到的第一个字符)

sed -i 's/3/8/' sedtest2.txt

在这里插入图片描述
咦,又发现了奇怪的问题了,怎么只替换了每行的第一个字符呢?

2.2全部替换,把文件中的3全部替换为8

sed -i 's/3/8/g' sedtest2.txt

在这里插入图片描述
这回全部替换了吧!

2.3从第N处开始之后的内容全部替换

sed -i 's/1/9/5g' sedtest2.txt

在这里插入图片描述

3.奇偶行查看

3.1奇数行查看

sed -n 'p;n' sedtest3.txt

在这里插入图片描述

3.2偶数行查看

sed -n 'n;p' sedtest3.txt

在这里插入图片描述

4.在指定行内插入内容

我们来使用创建的第四个文件。

cat -n  sedtest4.txt

4.1 在第一行插入skyfans good teacher字符内容

sed -i "1i skyfans good teacher" sedtest4.txt

在这里插入图片描述
可以看到已经成功的插入到第一行了。

4.2 在最后一行插入 This is the last line

sed -i '$a This is the last line' sedtest4.txt
cat -n  sedtest4.txt

在这里插入图片描述
可以看到已经成功的追加到最后一行了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值