sed 的相關用法

2021-09-13 14:13:29 字數 3621 閱讀 7501

寫本篇部落格時,正在讀一本叫做《sed & awk》的第三版書籍,這本書真的很不錯,作為一本熱門技術書籍,足以見得作者是乙個很用心的人,(當然我看的是中文翻譯版的,翻譯作者同樣用心),感謝作者提供這樣優秀的書籍供熱愛技術的人們學習,感謝。

說起sed,不得不說一說ed,首先來說ed類的編輯器都是基於行進行操作的,sed也是這樣。

ed中的命令說明:

ed中的操作分兩部分,一是位址操作,二是對行的修改操作。

以下為ed的刪除命令  

root@guest-virtual-machine:/home/guest/shell# ed test.sed 

399                                #顯示的是檔案中的字元的個數

p    #顯示當前行

-rw-r--r--  1 root  root     0  5月 24 17:01 test.sed

1    #切換至當前行號

總用量 24

2drwxrwxr-x  3 guest guest 4096  5月 24 16:54 ./

d2    #刪除當前行號的行

drwxr-xr-x 25 guest guest 4096  5月 24 09:41 ../

g/test/d                #表示全域性刪除帶有test的所有的行,刪除後,發現沒有了包含test的行。

1    

總用量 24

2drwxr-xr-x 25 guest guest 4096  5月 24 09:41 ../

3-rw-r--r--  1 root  root    91  1月  9 17:20 function

4drwxr-xr-x  2 root  root  4096  1月  9 17:26 function_import/

5            #如果命令出錯,顯示?

?

以下為替換命令:(替換命令,我只提出下邊兩種情況)

/test/s/test/test1/g   # 位址為/test/  修改是/s/test/test1/g ,表示修改test所在第一行的所有test為test1

1總用量 24  

2drwxrwxr-x  3 guest guest 4096  5月 24 16:54 ./

3drwxr-xr-x 25 guest guest 4096  5月 24 09:41 ../

4-rw-r--r--  1 root  root    84  1月  9 16:56 args_test1

5-rw-rw-r--  1 guest guest   62  1月  8 21:30 file_test_1

6-rw-r--r--  1 root  root    91  1月  9 17:20 function

7drwxr-xr-x  2 root  root  4096  1月  9 17:26 function_import/

8-rw-r--r--  1 root  root     0  5月 24 17:01 test.sed

g/test/s/test/test1/g #表示匹配所有帶有test的行,並修改所有的test為test1

1總用量 24

2drwxrwxr-x  3 guest guest 4096  5月 24 16:54 ./

3drwxr-xr-x 25 guest guest 4096  5月 24 09:41 ../

4-rw-r--r--  1 root  root    84  1月  9 16:56 args_test1

5-rw-rw-r--  1 guest guest   62  1月  8 21:30 file_test1_1

6-rw-r--r--  1 root  root    91  1月  9 17:20 function

7drwxr-xr-x  2 root  root  4096  1月  9 17:26 function_import/

8-rw-r--r--  1 root  root     0  5月 24 17:01 test1.sed

9?

總結說明:開始處的「g」為全域性命令,表示匹配所有的這個(字元,或是正則)位址,結尾處的「g」表示匹配每一行**現的這個字元,或者正則。(如果位址和匹配字元一樣,可以進行省略。)

g/test/s//test1/g

1總用量 24

2drwxrwxr-x  3 guest guest 4096  5月 24 16:54 ./

3drwxr-xr-x 25 guest guest 4096  5月 24 09:41 ../

4-rw-r--r--  1 root  root    84  1月  9 16:56 args_test1

5-rw-rw-r--  1 guest guest   62  1月  8 21:30 file_test1_1

6-rw-r--r--  1 root  root    91  1月  9 17:20 function

7drwxr-xr-x  2 root  root  4096  1月  9 17:26 function_import/

8-rw-r--r--  1 root  root     0  5月 24 17:01 test1.sed

9?

以下為grep命令在實際中的應用:(查詢結果會高亮顯示)

root@guest-virtual-machine:/home/guest/shell# grep 'test' test.sed 

-rw-r--r--  1 root  root    84  1月  9 16:56 args_test

-rw-rw-r--  1 guest guest   62  1月  8 21:30 file_test_1

-rw-r--r--  1 root  root     0  5月 24 17:01 test.sed

sed 的使用方法,替換命令。(一般使用『』將命令進行處理,也可用「」)

root@guest-virtual-machine:/home/guest/shell# cat edtest 

guest,13 king road,china

master,17 beihaidao road,japan

bob,20 paris kk road,french

tom,34 dynamic road ,german

xinchen,19 zhongshan road,china

root@guest-virtual-machine:/home/guest/shell# sed 's/road/street/' edtest 

guest,13 king street,china

master,17 beihaidao street,japan

bob,20 paris kk street,french

tom,34 dynamic street ,german

xinchen,19 zhongshan street,china

可以直接採用檔案的形式驚醒匹配,將sed的引數(規則,正規表示式等)寫在乙個檔案中,然後通過以下命令進行呼叫:

sed -f sedscript filename # sedscript 為指令碼名,filename 為檔名

sed的基本用法

sed的工作流程 sed stream editor,流編輯器,預設對原檔案不做任何處理,僅對模式空間的資料進行處理,處理結束後,將模式空間列印至螢幕。sed逐行將檔案讀取到模式空間 記憶體 進行模式匹配,如果符合模式進行編輯 取決給的編輯命令 之後進行下一行的操作sed命令格式 sed optio...

sed命令的用法

sed命令的用法 sed 的基本命令 1 替換 s命令 1.1 基本用法 如 sed s day night new 該例子將檔案 old 中的每一行第一次出現的 day 替換成 night,將結果輸出到檔案 new s 替換 命令 分割符 delimiter day 搜尋字串 night 替換字串...

Sed的用法(二)

1.排除命令 取反 1 this is the header line 2 this is the first line 3 this is the second line 4 this is the last line使用排除的方式列印出不包含header的所有行的內容 不使用!取反列印出的內容 ...