sed-new

用于按行处理文本文件

https://www.runoob.com/linux/linux-comm-sed.html
https://www.jianshu.com/p/90fc7c663143

1. 基本语法

cat file|sed 'number operation'

参数说明:
-n / --quiet / --silent : 仅显示script处理后的结果,有些命令不适用本参数则会将原文本一起输出

2. 删除行

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk 
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed '2,4d'  #删除第二到第四行
1------------------------------------------------1
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

对以上的删除操作,效果相同的写法还有:
cat kkk|sed 2,4d 可以省略单引号
cat kkk|sed -e 2,4d-e 来指定操作
cat kkk|sed 2,4\d 用反斜杠来隔离数字和操作
cat kkk|sed -e 2,4\d 反斜杠和 -e 结合
cat kkk|sed -e '2,4d' 单引号和 -e 结合

如果只想删除其中的一行,将 d 之前的数字改成想要删除的行号即可

删除某行到最后一行
cat kkk|sed '3,$d'
sed 操作中,用 $ 代表最后一行的行号

3. 增加行

3.1 在某行前新增一行
(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk 
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed '5i llll'  #在第五行前新增一行
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
4------------------------------------------------4
llll
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed 5i\llll   #在第五行前新增一行
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
4------------------------------------------------4
llll
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed '3i pppp\
uuuuuu'  #增加两行及以上内容
1------------------------------------------------1
2------------------------------------------------2
pppp
uuuuuu
3------------------------------------------------3
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

当增加两行及以上内容时,每行新增加的字符后要紧跟一个反斜杠,下一行要增加的内容要换行输入

3.2 在某行后新增一行
(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk 
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed '3a pppppp'  #在第三行后新增一行
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
pppppp
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed 3a\pppppp  ‘’#在第三行后新增一行
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
pppppp
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed '3a pppp\
uuuuuu'  #在第三行后增加连续的两行
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
pppp
uuuuuu
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

当增加两行及以上内容时,每行新增加的字符后要紧跟一个反斜杠,下一行要增加的内容要换行输入

4. 以行为单位进行替换
(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk 
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed '3,5c ttttttttttttttttttt'  #将文本的第3到5行替换为一行指定文本
1------------------------------------------------1
2------------------------------------------------2
ttttttttttttttttttt
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed '3,5c ttttttttttttttttttt\  #将文本的第3到5行替换成两行或以上指定文本
> pppppppppppppp'
1------------------------------------------------1
2------------------------------------------------2
ttttttttttttttttttt
pppppppppppppp
6------------------------------------------------6
7------------------------------------------------7
5. 以行为单位进行显示
(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk 
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed -n '2p'  #仅显示第二行
2------------------------------------------------2

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed -n '2,5p'   '#仅显示第二到第五行
2------------------------------------------------2
3------------------------------------------------3
4------------------------------------------------4
5------------------------------------------------5
6. 字符串查找
(base) zhiyong@zhiyong-OptiPlex-7050:~/Work$ cat kkk|sed -n '/3/p'  #查找所有包含3的行,注意参数-n的使用
3------------------------------------------------3
3------------------------------------------------3
7. 删除最后几行

for i in `seq 10`; do sed -i '$d' aa ; done

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work/Now/Orthology/OrthoDB/Amel_Bimp/Existing_in_all_species$ cat aa|tail
  "count": 6795,
  "skip": 0,
  "limit": 1000,
  "query": "",
  "level": 34735,
  "url": "https://v101.orthodb.org//search?query=&level=34735&species=7460_0%2C132113_0&universal=1&singlecopy=",
  "universal": 100,
  "singlecopy": null,
  "inclusive": 1
}

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work/Now/Orthology/OrthoDB/Amel_Bimp/Existing_in_all_species$ for i in `seq 10`; do sed -i '$d' aa ; done

(base) zhiyong@zhiyong-OptiPlex-7050:~/Work/Now/Orthology/OrthoDB/Amel_Bimp/Existing_in_all_species$ cat aa|tail
    "115at34735",
    "1667at34735",
    "1002at34735",
    "1242at34735",
    "1937at34735",
    "1413at34735",
    "1118at34735",
    "1398at34735",
    "1255at34735"
  ],
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • """1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello ...
    她即我命阅读 4,259评论 0 6
  • 1、expected an indented block 冒号后面是要写上一定的内容的(新手容易遗忘这一点); 缩...
    庵下桃花仙阅读 851评论 1 2
  • 一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具 【M】移动工具 【V...
    墨雅丫阅读 1,265评论 0 0
  • 跟随樊老师和伙伴们一起学习心理知识提升自已,已经有三个月有余了,这一段时间因为天气的原因休课,顺便整理一下之前学习...
    学习思考行动阅读 763评论 0 2
  • 一脸愤怒的她躺在了床上,好几次甩开了他抱过来的双手,到最后还坚决的翻了个身,只留给他一个冷漠的背影。 多次尝试抱她...
    海边的蓝兔子阅读 645评论 0 4

友情链接更多精彩内容