shell脚本三剑客之sed

目录

sed的实际操作:

常用选项:

操作符:

 打印指定行,寻址打印

 行号的范围区间打印

打印奇数行和偶数行

文本过滤模式:

应用基础正则表达式进行打印

扩展正则表达式

 以root开头或者bash结尾的行

指定行号进行删除

匹配字符串内容删除

正则表达式删除

sed替换

增加

 sed命令当中字符串的位置进行交换

把中间的空格替换成下划线

将版本号提取出来

 将messages文件中11:30-12:00的日志提取出来

 将网卡配置文件的网卡替换成10.0.0.10


sed:类似于vim,就是一个文本编辑器,按行来进行编辑和处理

grep sed awk:文本三剑客都是针对文件内容的行来进行处理

sed的主要作用就是对文本内容进行增删改查

sed可以支持正则表达式,也可以支持扩展正则表达式

sed的工作原理:读取,执行,显示三个过程

读取:读取文本内容之后,会把读取到的内容存放到临时的缓冲区,又称模式空间

执行:在模式空间,根据读取的文本内容,按行执行,除非指定行号,否则会遍历所有行。依次执行,从上往下执行。

显示:执行完之后,把执行结果打印,如果要改变生效,模式空间被修改的内容会写入到指定的文件当中。只是操作,但是不最终写入文件,只展示结果,展示完之后,模式空间的数据,会立即删除。

sed的实际操作:

sed -e '操作' 文件1 -e '操作' 文件2

只对一个文件进行操作,可以不加-e

常用选项:

-e:条件操作选项

-f:指定脚本文件来处理输入的文件内容,把命令写在脚本里,用脚本里的命令来处理第二个文件里面的内容

-i:立即生效 慎用

-n:显示script处理后的结果

操作符:

s:替换 替换指定的字符

d:删除,删除指定的行

a:增加,在当前行的下一行插入指定内容

i:增加,在指定行的上一行插入指定内容

c:替换,替换整行

y:替换字符,但是替换前后的字符长度必须一致 123 456

p:打印

r:使用扩展正则

sed的核心就是改,删,增。查没有grep强大。

查:

sed ' '

sed ' ' /etc/passwd = cat /etc/passwd | sed ' ' = sed ' ' < /etc/passwd

sed自己有一个默认输出,p打印会额外再来一行

-n 禁止sed的默认输出

sed -n '=' ky30.txt

显示行号

sed -n '=;p' ky30.txt

 打印指定行,寻址打印

 行号的范围区间打印

 

行号范围打印:逗号(,)表示到,分号(;)表示和

打印奇数行和偶数行

打印偶数行

 打印奇数行

文本过滤模式:

对包含指定字符串的内容进行打印

sed -n '/o/p' ky30.txt //可以是单个字符,也可以是字符串

sed -n '/big/p' ky30.txt //所有包含big的行,会全部打印

 

应用基础正则表达式进行打印

sed -n '/^root/p' /etc/passwd

打印以bash为结尾的行

扩展正则表达式

sed -r -n ' ' /etc/passwd

 以root开头或者bash结尾的行

指定行号进行删除

sed -n '3d;p' ky30.txt //删除第三行,打印剩下来的

sed -n '1d,3d;p' ky30.txt //删除第一行和第三行,打印剩下来的

匹配字符串内容删除

sed '/o/d' ky30.txt //把包含o的行删除

sed '/o/!d' ky30.txt //除了包含o的行,其他都删掉

sed '/one/,/six/d' test.txt //把包含one到six的行全部删除,打印剩余的

sed '/one/,/six/!d' test.txt //只保留包含one到six的行,其他全部删除,打印剩余的

正则表达式删除

sed '/^$/d' ky30.txt //删除空行

sed替换

s:替换字符串

c:整行替换

y:单字符替换,前后长度要保持一致

以root开头的行替换成#root注释掉

 替换字母大写

u&:转换成小写的特殊符号,在使用时,需要转义符

替换字母小写

l&:转换成小写的特殊符号,在使用时,需要转义符

u&:转换成小写的特殊符号,在使用时,需要转义符

g:全部替换,如果不加,只会更改手写字符

整行替换

 y:单字符替换,前后长度要保持一致

全量替换,有多少换多少

增加

a 在下一行添加

i 在上一行添加

r 在行后读入指定文件的内容

 

 sed命令当中字符串的位置进行交换

 

把中间的空格替换成下划线

vim 123.txt

 vim 456.txt

将版本号提取出来

第一种方法:

 

 

第二种方法:

 将messages文件中11:30-12:00的日志提取出来

 将网卡配置文件的网卡替换成10.0.0.10

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值