sed 命令,後臺開發必知命令

前言

p 命令,用來打印文件內容

(一) 打印整個文本,n 命令,僅顯示 script 處理後的結果,不加 n 命令,會把待處理的信息也輸出。

(二) 打印第一行到最後一行的內容。1 表示第一行, $ 表示最後一行。

1[root]# sed -n "1,$"p test.txt
2tom likes to play football
3kevin likes to eat cabbage
4frank likes to drink beer
5cary doesn't like smoking
6
7

(三)   過濾帶 to 的行, 類似於 grep 命令。

1[root]# sed -n "/to/"p test.txt
2tom likes to play football
3kevin likes to eat cabbage
4frank likes to drink beer
5
6

(四) 打印匹配 kevin 開始,frank 爲結束的行。

1[root]# sed -n "/kevin/,/frank/"p test.txt
2kevin likes to eat cabbage
3frank likes to drink beer
4
5

s 命令,用於替換

(一) 將 kevin 替換成 kkk。

1[root]# sed  "s/kevin/kkk/g" test.txt
2tom likes to play football
3kkk likes to eat cabbage
4frank likes to drink beer
5cary doesn't like smoking
6
7

(二) 只針對第二行進行判斷。

1[root]# sed  "2s/kevin/xxx/g" test.txt
2tom likes to play football
3xxx likes to eat cabbage
4frank likes to drink beer
5cary doesn't like smoking
6
7

(三) 針對多行進行替換。

1[root]# sed  "1,4s/kevin/xxx/g" test.txt
2tom likes to play football
3xxx likes to eat cabbage
4frank likes to drink beer
5cary doesn't like smoking
6
7

(四) 只替換第 1 個 to 爲 tt 。

1[root]# sed "s/to/tt/1" test.txt
2ttm likes to play football
3kevin likes tt eat cabbage
4frank likes tt drink beer
5cary doesn't like smoking
6
7

(五) 只替換第 2 個 to。

1[root]# sed "s/to/tt/2" test.txt
2tom likes tt play football
3kevin likes to eat cabbage
4frank likes to drink beer
5cary doesn't like smoking
6
7

(六) 開頭加點東西 (註釋)。

1[root]# sed "s/^/\/\/ /" test.txt
2// tom likes to play football
3// kevin likes to eat cabbage
4// frank likes to drink beer
5// cary doesn't like smoking
6
7

(七) 末尾加點東西。

1[root]# sed "s/$/  \/\/ comment /" test.txt
2tom likes to play football  // comment 
3kevin likes to eat cabbage  // comment 
4frank likes to drink beer  // comment 
5cary doesn't like smoking  // comment 
6
7

c 命令,用於行替換

(一) 將第二行的內容替換 hehe。

1[root]# sed "2 c hehe" test.txt
2tom likes to play football
3hehe
4frank likes to drink beer
5cary doesn't like smoking
6
7

(二) 僅僅替換有 tom 的行。

1[root]# sed "/tom/c cat" test.txt
2cat
3kevin likes to eat cabbage
4frank likes to drink beer
5cary doesn't like smoking
6
7

i 命令, 表示行插入

(一) 在第一行前面插入。

1[root]# sed "1 i love you" test.txt
2love you
3tom likes to play football
4kevin likes to eat cabbage
5frank likes to drink beer
6cary doesn't like smoking
7
8

(二) 在最後一行前面插入。

1[root]# sed "$ i love you" test.txt
2tom likes to play football
3kevin likes to eat cabbage
4frank likes to drink beer
5love you
6cary doesn't like smoking
7
8

a 命令, 用於依附

(一) 在第一行後依附。

1[root]# sed "1 i love you" test.txt
2love you
3tom likes to play football
4kevin likes to eat cabbage
5frank likes to drink beer
6cary doesn't like smoking
7
8

(二) 在最後一行後依附。

1[root]# sed "$ i love you" test.txt
2tom likes to play football
3kevin likes to eat cabbage
4frank likes to drink beer
5love you
6cary doesn't like smoking
7
8

d 命令,刪除所匹配的行

(一) 刪除有 kevin 的行。

1[root]# sed "/kevin/d" test.txt
2tom likes to play football
3frank likes to drink beer
4cary doesn't like smoking
5
6

(二) 刪除第 1 行。

1[root]# sed "1d" test.txt
2kevin likes to eat cabbage
3frank likes to drink beer
4cary doesn't like smoking
5
6

(三) 刪除第 2-4 行。

1[root]# sed "2,4d" test.txt
2tom likes to play football
3
4

絮叨

sed 命令,作爲 linux 三劍客之一,功能非常強大。在工作和麪試中,也會用到。處理問題時,可以配合 awk,grep 一起使用,方便多多。

希望這篇文章對大家學習 sed 命令有所幫助,祝大家學習愉快!

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/o2RN47qDRUgHKgVnEeRU6w