shell 三剑客(sed)用法

shell 三剑客 sed用法
string+edit=流编辑器
sed 两个空间:模式空间,保持空间
模式空间:sed处理文本内容行的一个临时缓冲区,模式空间中的内容会主动打印到标准输出,并自动清空模式空间
保持空间:sed处理文本内容行的另一个临时缓冲区,不同的是保持空间内容不会主动清空,也不会主动打印到标准输出,而是需要sed命令来进行处理
小写的都是表示:覆盖
大写的都是表示:追加
n|N(next)
n : 读取下一行覆盖模式空间中的行
N:读取下一行并追加到模式空间中的行后面
x:exchange 空间交换
把模式空间中的内容he保持空间中的内容互换,初始保持空间中为空
h|H(hold)
h:把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g|G(get)
g:把保持空间中的内容覆盖至模式空间中
G:把保持空间中的内容追加至模式空间中
用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...
-i:会修改源文件!
-n:取消自动打印模式空间的内容
s:表示替换
p:print 表示打印
d:delete 表示删除
a:append 表示追加
i:insert 表示插入
c:整行替换
w:write 将匹配行写入指定文件内
r:read 读取指定文件.文件合并
=:用来显示行号的
!:表示取反的意思
#将所有的root替换为huazai007
sed -i 's/root/huazai007/g' /etc/passwd
#指定从第二个huazai007 开始替换为root
sed -i "s/huazai007/root/2g" /tmp/passwd
#将mail替换为ligenjian(只打印,不修改源文件!)
sed 's/mail/ligenjian/' /etc/passwd|grep ligenjian
#将以ftp开头的替换为ftp_wg(不修改源文件)
&:表示被匹配的字符(ftp)
sed "s/^ftp/ftp_wg/g" /tmp/passwd | grep ftp_wg
sed "s/^ftp/&_wg/g" /tmp/passwd | grep ftp_wg
#打印第10行
sed -n '10p' /etc/passwd
#打印 第5行到第10行的内容
sed -n '5,10p' /etc/passwd
#从第5行开始,往下打印3行
sed -n '5,+3p' num
#打印奇数行
sed -n '1~2p' num
#打印偶数行
sed -n '2~2p' num
#删除第二行
sed '2d' num
#删除 1-3行
sed '1,3d' num
#删除空行(^开头  $结尾)
sed '/^$/d' num
#删除以huazai007开头的行
sed '/^huazai007/d' /tmp/passwd |grep huazai
#删除以bash 结尾的行
sed '/bash$/d' /etc/passwd|grep bash
#在以ftp开头的行后面追加一行字符“wg001”
sed '/^ftp/a"wg001"' /etc/passwd
#在以nologin 结尾的行后面追加一行字符“bw007”
sed '/nologin$/a"bw007"' /etc/passwd
#在第三行给我追加一个字符“wg002”
sed '3a"wg002"' /etc/passwd
#在第三行的前面插入一行字符“wg003”
sed '3i"wg003"' /etc/passwd
#在以mail开头的行前面插入一行字符“wg004”
sed '/^mail/i"wg004"' /etc/passwd
#将包含mail的行整行替换为“wg005”
sed '/mail/c"wg005"' /etc/passwd
#将以nologin结尾的整行替换为 wg006
sed '/nologin$/c"wg005"' /etc/passwd
#将以nologin结尾的行 写入到指定文件:result.txt里
sed '/nologin$/w /tmp/result.txt' /etc/passwd
#将1-10行写入到/tmp/result.txt里
sed '1,10w /tmp/result.txt' /etc/passwd
#读取 /tmp/result.txt 并将内容写入到 以mysql开头nologin结尾的行后面
sed '/^mail.*nologin$/r /tmp/result.txt' /etc/passwd
#显示最后一行的行号
sed '$=' /etc/passwd
#除了#号开头的行都打印出来
sed -n '/^#/!p' /tmp/result.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值