shell第六章shell sed工具

 

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 :替换,替换字符,替换前后的字符长度必须一致

p :打印 范围打印:,到 ;和

r :表示使用扩展

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

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

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

sed -n '/$bash/'

sed -r -n '/^root|bash$'

指定行号来进行删除:

sed -n '3d;p' ky30.txt

sed -n '1d;3d;p' ky30.txt

sed替换:

s:替换字符串

sed -n 's/root/test/gp' /etc passwd

以root为开头的,把他开头替换成#,把root为开头的行,注释掉:

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

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

字母字符的大小写替换:

sed 's/[a-z]/\u&/g' ky30 (小变大)

sed 's/[A-Z]/\l&/g' ky30 (大变小)

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

c:整行替换

sed '/exy/c boge is sexy' ky30.txt

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

sed '/boge/a 123' ky30

sed '/boge/i 123' ky30

sed '/bighouse/r ky31.txt' ky30txt

读取的文件 第二个文件是要操作的文件

面试题:

1,sed文本内容处理器,文件过大怎么办?

split -l

split -b

cat +文件名 | sed 处理————中型文件,大型文件还是先分割的好

2,怎么样不进入文件就能删除文件当中的内容,免交互删除

sed -i 'd' ky30.txt

cat /dev/null > ky30.txt

3,

 

4,前一个文件的命令对下一个文件操作

5,cat ms.txt | sed -r 's/(.*)-(.*)(\.jar)/\1\2\3/'

grep -E "[0-9]+\." ms.txt

6,查看tail -f messages 去匹配的范围内进行打印

sed -n 'Jul 20 11:30:01/,/Jul 20 12:00:01'

7,把网卡的指定ip地址换掉

sed '/准备更换的内容/c /替换的内容/' /etc/sysconfig/network-scripts/ifcfg-ens33

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值