Sed命令基本用法

sed

是一个流编辑器。流编辑器用于对输入流(文件或来自管道的输入)执行基本文本转换。它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。

sed编辑命令

d 删除模式空间匹配的行,并立即启用下一轮循环
p 打印当前模式空间内容,追加到默认输出之后
a [\]text 在指定行后面追加文本,支持使用\n实现多行追加
i [\]text 在行前面插入文本,-i.bak 备份文件并原处编辑
c [\]text 替换行为单行或多行文本
w /path/file 保存模式匹配的行至指定文件
r /path/file 读取指定文件的文本至模式空间中匹配到的行后
= 为模式空间中的行打印行号
! 模式空间中匹配行取反处理
s /// 查找替换,支持使用其它分隔符,s@@@,s###
替换标记:

g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中

sed -n '/^$/=' file //显示空行行号
nl /etc/passwd | sed '2,10d' //删除2到10行
nl /etc/passwd | sed '2,+10d' //删除第2行和之后的10行
sed -n -e '/root/p' -e '/root/=' /etc/passwd //打印包含root的行,并显示行号
sed -n '/root/c superman' /etc/passwd //将包含root的行用superman替换
sed –n ‘s/root/&superman/p’ /etc/passwd //在root后追加superman,superman&在root前追加
sed -i.bak '/bash/c csh' passwd //将passwd文件里的bash替换为csh,保存文件并生成原文件备份文件passwd.bak

sed -n 不输出模式空间内容到屏幕,即不自动打印
sed -r 支持使用扩展正则表达式

注意:

	cat shadow  | sed -n '2,5p' //打印出shadow文件里的2~5行
	cat shadow | sed -n '2,+5p' //打印出第2行和之后的5行,即2~7行

利用sed 取出ifconfig ens33命令中本机的IPv4地址:

ifconfig ens33 | sed -rn '2s/(.*inet )(.*)( netmask.*)/\2/p'
ifconfig ens33 | sed -rn '2s/(^[^0-9]+)([0-9.]+)( .*$)/\2/p'
ifconfig ens33 | sed -rn '2s/^[^0-9]+([0-9.]+) .*$/\1/p'

案例:
删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行 行首的空白字符:

sed -r 's/^[[:blank:]]+//' /etc/grub2.cfg

利用sed 取出ifconfig命令中本机的IPv4地址:

ifconfig | sed -n '/netmask/p' | sed -r 's/inet (.*) netmask.*/\1/'
ifconfig | sed -rn '/netmask/s/inet (.*) netmask.*/\1/p'		

统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和 sed两种方法分别实现):

sed -r "s/[^[:alpha:]]/\n/g" /etc/init.d/functions| sort | uniq -c | sort -nr
egrep -o "[[:alpha:]]+" /etc/init.d/functions| sort | uniq -c | sort -n

替换一个文件/etc/passwd里的这root❌0:0:root:/root:/bin/bash一行第二个root为test?

cat /etc/passwd | sed -rn '/^root/p'| sed -r 's/root/test/2'
cat /etc/passwd | sed -rn '/^root/s/root/test/2p'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值