用于按行處理文本文件
https://www.runoob.com/linux/linux-comm-sed.html
http://www.itdecent.cn/p/90fc7c663143
1. 基本語法
cat file|sed 'number operation'
參數(shù)說明:
-n / --quiet / --silent : 僅顯示script處理后的結果,有些命令不適用本參數(shù)則會將原文本一起輸出
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用反斜杠來隔離數(shù)字和操作
cat kkk|sed -e 2,4\d反斜杠和 -e 結合
cat kkk|sed -e '2,4d'單引號和 -e 結合
如果只想刪除其中的一行,將 d 之前的數(shù)字改成想要刪除的行號即可
刪除某行到最后一行
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' #增加兩行及以上內(nèi)容
1------------------------------------------------1
2------------------------------------------------2
pppp
uuuuuu
3------------------------------------------------3
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7
當增加兩行及以上內(nèi)容時,每行新增加的字符后要緊跟一個反斜杠,下一行要增加的內(nèi)容要換行輸入
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' #在第三行后增加連續(xù)的兩行
1------------------------------------------------1
2------------------------------------------------2
3------------------------------------------------3
pppp
uuuuuu
4------------------------------------------------4
5------------------------------------------------5
6------------------------------------------------6
7------------------------------------------------7
當增加兩行及以上內(nèi)容時,每行新增加的字符后要緊跟一個反斜杠,下一行要增加的內(nèi)容要換行輸入
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的行,注意參數(shù)-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"
],