#!/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行,每一行行末都追加