linux中sed命令删除首次匹配字符及其之前的内容或者指定匹配字符及其之前的内容
001、删除首次匹配字符及其之前的内容
root@DESKTOP-IDT9S0E:/home/test/test/test# ls a.txt root@DESKTOP-IDT9S0E:/home/test/test/test# cat a.txt ## 测试数据 awQQrQQ24QQ34QQr5 sfewQQ3dsQQkkQQ saeQQ88QQjjQQdsf root@DESKTOP-IDT9S0E:/home/test/test/test# sed 's/QQ/tag/' a.txt | sed 's/.*tag//' rQQ24QQ34QQr5 3dsQQkkQQ 88QQjjQQdsf
## 首先是将一个匹配的字符转换为tag,这个tag应当是唯一的,然后将tag及其之前的内容全部删除即可。
002、 删除指定匹配次数字符及其之前的字符
root@DESKTOP-IDT9S0E:/home/test/test/test# ls a.txt root@DESKTOP-IDT9S0E:/home/test/test/test# cat a.txt ## 测试数据 awQQrQQ24QQ34QQr5 sfewQQ3dsQQkkQQ saeQQ88QQjjQQdsf root@DESKTOP-IDT9S0E:/home/test/test/test# sed 's/QQ/tag/2' a.txt | sed 's/.*tag//' 24QQ34QQr5 kkQQ jjQQdsf
## 同理将第一个sed将第二次匹配的字符转换为tag,然后删除tag及其之前的内容
003、删除最后匹配字符及其之前的内容
root@DESKTOP-IDT9S0E:/home/test3# ls a.txt root@DESKTOP-IDT9S0E:/home/test3# cat a.txt ## 测试数据 awQQrQQ24QQ34QQr5 sfewQQ3dsQQkkQQu65 saeQQ88QQjjQQdsf iereeterre32435 root@DESKTOP-IDT9S0E:/home/test3# sed 's/\(.*QQ\)\(.*\)/\2/' a.txt ## 利用sed预存储实现 r5 u65 dsf iereeterre32435
004、删除首次匹配字符(二次匹配字符)及其后的内容
root@DESKTOP-IDT9S0E:/home/test/test/test# ls a.txt root@DESKTOP-IDT9S0E:/home/test/test/test# cat a.txt ## 测试数据 awQQrQQ24QQ34QQr5 sfewQQ3dsQQkkQQ saeQQ88QQjjQQdsf root@DESKTOP-IDT9S0E:/home/test/test/test# sed 's/QQ/tag/' a.txt | sed 's/tag.*//' aw sfew sae
## 删除第一个匹配字符及其后的内容 root@DESKTOP-IDT9S0E:/home/test/test/test# sed 's/QQ/tag/2' a.txt | sed 's/tag.*//' awQQr sfewQQ3ds saeQQ88
## 删除第二个匹配字符及其后的内容
005、删除最后匹配字符及其后的内容
root@DESKTOP-IDT9S0E:/home/test3# ls a.txt root@DESKTOP-IDT9S0E:/home/test3# cat a.txt ## 测试数据 awQQrQQ24QQ34QQr5 sfewQQ3dsQQkkQQu65 saeQQ88QQjjQQdsf iereeterre32435 root@DESKTOP-IDT9S0E:/home/test3# sed 's/\(.*QQ\)\(.*\)/\1/' a.txt awQQrQQ24QQ34QQ sfewQQ3dsQQkkQQ saeQQ88QQjjQQ iereeterre32435 root@DESKTOP-IDT9S0E:/home/test3# sed 's/\(.*QQ\)\(.*\)/\1/' a.txt | sed 's/QQ$//' awQQrQQ24QQ34 sfewQQ3dsQQkk saeQQ88QQjj iereeterre32435
## 删除最后匹配字符及其后的内容