sed 基础

#!/bin/bash

cat aaa
a11b22c33
a11b22c33d44
a11b22c33d44e55
abc
a11b22c33d44e55f66
abcd
a11b22c33d44e55f66g77
a11b22c33d44e55f66g77h88
a11b22c33d44e55f66g77h88i99
https://www.baidu.com/123
a11b22c33

# 1.将每一行出现的第二个c替换成Q,注意:次操作会让所有行生效
    sed 's/c/Q/2' aaa
    # 将所有的c替换为Q,g代表每一处
    sed 's/c/Q/g' aaa
# 2.将aaa文件中每一行的7替换成HHH,将匹配到的结果替换之后输出到1.log里,g代表替换每一处后,w输出
    sed 's/7/HHH/gw 1.log' aaa
# 3.使用!作为处理字符串时的分割符,避免很多转译
    sed 's!//www.baidu.com/!|||\/google.cn/!' aaa
    # https://www.baidu.com/123 被转换为 https:|||/google.cn/123
# 4.sed s 替换
    sed '3s/c/Q/2' aaa                 #将第3行出现的第二个c替换为Q
    sed '1,3s/c/Q/g' aaa            #将第1-3行出现的所有c替换为Q 
    sed '3,$s/c/Q/g' aaa            #将第3行到最后一行出现的所有c替换为Q, $代表最后一行
    sed '$s/ab/666/' aaa            #将最后一行的ab替换为666
    sed '/4e/s/55/666/' aaa            #将含有4e的所在行,把55替换为666
    sed ''/4e/',$s/a/666/' aaa         #'/4e/',$s   从匹配到第一处4e的行号到最后一行号之间的所有行,把a替换为666
    sed '8{s/2/M/g;s/3/N/2}' aaa    #将第8行的所有2替换为M,并把出现的第二个3替换为N
# 5.sed d 删除
    sed '$'d aaa                     #删除最后一行
    sed '5,$'d aaa                     #删除5到最后一行
    sed -i 'd' aaa                    #清空aaa
    sed '/baidu/d' aaa                #删除baidu所在行
    sed ''/baidu/',$d' aaa            #删除baidu所在行至最后一行
# 6.sed i a ,i inser 匹配到行前插入,a append 匹配到行后插入
    sed ''/4e/',$a666' aaa            #匹配到4e开始到最后一行,每行后插入一行666
    sed '3i\iloveyou' aaa            #在第三行前插入iloveyou,插入完后iloveyou为第三行
    sed '3a\iloveyou' aaa            #在第三行后插入iloveyou,插入完后iloveyou为第四行
    sed '$a\iloveyou' aaa            #在文段末追加
    sed '$i\iloveyou' aaa            #在倒数第二行追加
# 7.sed c     整行替换
    sed '3c\iloveyou' aaa            #吧第三行换位iloveyou
    sed '/55/c\iloveyou' aaa        #把55所在行替换为iloveyou
    sed '/55/ciloveyou' aaa            #把55所在行替换为iloveyou
# 8.sed y 单个字符替换,input和output字符串个数必须对应
    sed 'y/abc123/zxc456/' aaa        #把文章中所有的a替换为z,所有的b替换为x....基于单个 字符之间的替换
# 9. sed p打印 -n选项:只显示匹配处理的行(否则会输出所有)(也就是关闭默认的输出)
    sed -n '2,3p' aaa                #打印2到3行
    sed '=' aaa                     #打印行号
    sed -n '4p' aaa                    #打印第4行
# 10.sed r 追加流
    sed '$r bbb' aaa                #将bbb文件内容追加到aaa文件末
    sed '1,5r bbb' aaa                #将bbb文件内容追加到aaa文件的1-5行,每一行行末都追加# 11.awk -F 同时使用(,|)作为分隔符
    echo "a,b|c(d)e" | awk -F "[(,|)]" '{print $1,$2,$3,$4,$5,$0}'
# 12.sed e 处理多个
    sed -e 's/btown/green/;s/dog/cat/g' aaa
# 13 sed -f 调用命令处理
    sed -f script1.sed  aaa
    cat script1.sed
    s/brown/greem/
    s/fox /elepant/
    s/dog/cat/
    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值