1. 程式人生 > 其它 >linux系統中sed刪除指定的行

linux系統中sed刪除指定的行

1、測試資料

[root@centos79 test]# ls
a.txt
[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s

2、刪除第二行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '2d' a.txt
3 4 5
s g 8
k s g
2 5 d
s c w
a r t
e 4 s

2、刪除第2行到第5行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '2,5d' a.txt
3 4 5
s c w
a r t
e 4 s

3、刪除第2行和第5行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '2d; 5d' a.txt
3 4 5
s g 8
k s g
s c w
a r t
e 
4 s

4、刪除2到5行和第7行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '2,5d; 7d' a.txt
3 4 5
s c w
e 4 s

5、刪除最後一行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '$d' a.txt
3 4 5
d g 
3 s g 8 k s g 2 5 d s c w a r t

6、刪除最後兩行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# a=$(sed -n "$=" a.txt )
[root@centos79 test]# echo $a
8
[root@centos79 test]# let b=a-2+1
[root@centos79 test]# sed $(($b)),$(($a))d a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w

7、刪除奇數行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '1~2d' a.txt
d g 3
k s g
s c w
e 4 s

8、刪除偶數行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '2~2d' a.txt
3 4 5
s g 8
2 5 d
a r t

9、刪除包含3的行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '/3/d' a.txt
s g 8
k s g
2 5 d
s c w
a r t
e 4 s

10、刪除包含3的行或者包含s的行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '/3\|s/d' a.txt
2 5 d
a r t

11、刪除同時含有3和4的行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '/3.*4\|4.*3/d' a.txt
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s

12、刪除以s開頭的行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '/^s/d' a.txt
3 4 5
d g 3
k s g
2 5 d
a r t
e 4 s

13、刪除以s開頭,同時以8結尾的行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '/^s.*8$/d' a.txt
3 4 5
d g 3
k s g
2 5 d
s c w
a r t
e 4 s

14、刪除以g結尾的行

[root@centos79 test]# cat a.txt
3 4 5
d g 3
s g 8
k s g
2 5 d
s c w
a r t
e 4 s
[root@centos79 test]# sed '/g$/d' a.txt
3 4 5
d g 3
s g 8
2 5 d
s c w
a r t
e 4 s