4.shell脚本中常用命令(2)-sed行编辑器

1.sed行编辑器

SED是一项Linux指令,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。

在这里插入图片描述

sed全称是:Stream EDitor
调用sed命令有两种形式:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)

在这里插入图片描述

sed工作机制
sed之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间:一个是活动的“模式空间(pattern space)”,另一个是起辅助作用的“保持空间(hold space)这2个空间的使用。

模式空间:类似于快照,数据之间在它上面进行处理,但不影响原数据。
保持空间:数据的暂存区域

正常情况下,如果不显示使用某些高级命令,保持空间不会使用到!

sed在正常情况下,将处理的行读入模式空间,脚本中的sed command(sed命令)就一条接着一条进行处理,直到脚本执行完毕。然后该行被输出,模式被清空;接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕。

2.sed基本命令

(1)显示:p命令
命令说明
sed ‘/#/p‘ zxyos显示含有#的行(不屏蔽模式空间)

在这里插入图片描述

(2)屏蔽模式空间中的内容(只显示符合要求的行):-n命令
命令说明
sed -n ‘/#/p‘ zxyos显示含有#的行(屏蔽模式空间)
sed -n ‘/#/!p‘ zxyos不显示含有#的行(屏蔽模式空间)
sed -n ‘2p‘ zxyos显示第2行(屏蔽模式空间)
sed -n ‘2,5p‘ zxyos显示2至5行(屏蔽模式空间)
sed -n ‘2p;5p‘ zxyos显示第2行和第5行(屏蔽模式空间)

显示含有#的行(屏蔽模式空间)
在这里插入图片描述
练习:只显示ifconfig eth0命令的ip
在这里插入图片描述

(3)删除:d命令
命令说明
sed '1,3d' zxyos删除1到3行
sed '1d;3d' zxyos删除第1行,第3行
sed '1,7d' zxyos删除1到7行
sed '1,7!d' zxyos1到7行不删除,删除其他
sed '/^UID/d' zxyos删除以UID开头的行
sed -n '/^UID/d' zxyos
sed '/^UID/!d' zxyos不删除以UID开头的行,删除其他
sed '/^$/d' zxyos删除空行
sed '/^$/!d' zxyos不删除空行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)添加(指定行后添加):a命令
命令说明
sed '/^UID/ahello jay' zxyos在以UID开头的行后添加hello jay
sed '/^UID/a\hello jay' zxyos在以UID开头的行后添加hello jay
sed '/^UID/ahello\njay' zxyos在以UID开头的行后添加hello换行添加jay
sed '/^UID/a\hello\njay' zxyos在以UID开头的行后添加hello换行添加jay

在这里插入图片描述
在这里插入图片描述

(5)插入(指定行前添加):i命令
命令说明
sed '/^UID/i\hello jay' zxyos在以UID开头的行前添加hello jay
sed '/^UID/i\hello\njay' zxyos在以UID开头的行前添加hello换行添加jay

在这里插入图片描述

(6)替换修改:c命令
命令说明
sed '/^$/c\hi zxyos' zxyos将空行修改为 hi zxyos
sed '/^#/c\wow' zxyos以#开头的行修改为wow

在这里插入图片描述

(7)写入:w命令
命令说明
sed '/^GID/w /mnt/xinos' zxyos把zxyos文件以GID开头的行写入/mnt/xinos文件(会回显zxyos文件内容)
sed -n '/^UID/w /mnt/xinos' zxyos把zxyos文件以UID开头的行写入/mnt/xinos文件(不回显zxyos文件内容)

在这里插入图片描述

(8)显示行号:=命令
命令说明
sed '/^#/=' zxyos > zxyos1zxyos文件中以#开头的行显示行号导入zxyos1文件中
sed '/^#/=' zxyos -i zxyos1zxyos文件中以#开头的行显示行号导入zxyos1文件中(不覆盖)
sed '6r /mnt/xinos' zxyos将/mnt/xinos文件的内容加到zxyos文件的第6行
sed '/^#/=' zxyos > zxyos清空zxyos文件

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(9)替换:s命令
命令说明
sed 's/0/zero/g' zxyos所有的0替换成zero
sed 's@0@zero@g' zxyos所有的0替换成zero
sed '1,4s/0/####/g' zxyos1到4行的0替换为####
sed '4s/0/####/g' zxyos第4行的0替换为####
sed 's/\//&&&/g' zxyos将/替换为&&&
sed '/#1/,/#4/s/255/999/g' zxyos含有#1到含有#4的行中255替换为999

'@‘的作用与’/'相同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(10)sed-其他用法
命令说明
sed -n '/^UID/=' zxyos显示以UID开头的行的行号
sed -n -e '/^UID/p' -e '/^GID/=' zxyos显示以UID开头的行和以GID开头的行的行号
sed -n '/^UID/p;/^GID/=' zxyos显示以UID开头的行和以GID开头的行的行号
sed -e '/^UID/p;/^GID/=' zxyos显示以UID开头的行和以GID开头的行的行号(不屏蔽模式空间)
sed '/^UID/p;/^GID/=' zxyos显示以UID开头的行和以GID开头的行的行号(不屏蔽模式空间)
sed -f file zxyos将命令写入file文件,逐一运行file文件中的命令
sed 'G' zxyos每行后(下一行)加空行
sed '$!G' zxyos每行后加空行,最后一行后不加空行
sed '=' zxyos每行显示行号(显示在每行的上一行)
sed '=' zxyos | sed 'N;s/\n/ /'在每行行首显示行号(N提前预加载下一行的内容)
sed '=' zxyos | sed 'N;s/\n/ /g'在每行行首显示行号(N提前预加载下一行的内容)
sed -n '$p' zxyos显示最后1行

N提前预加载下一行的内容
‘-e’的作用与’;'等效,是语句间的分隔符
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
sed -n '$p' zxyos等效于tail -n 1 zxyos显示最后1行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值