寫本篇部落格時,正在讀一本叫做《sed & awk》的第三版書籍,這本書真的很不錯,作為一本熱門技術書籍,足以見得作者是乙個很用心的人,(當然我看的是中文翻譯版的,翻譯作者同樣用心),感謝作者提供這樣優秀的書籍供熱愛技術的人們學習,感謝。
說起sed,不得不說一說ed,首先來說ed類的編輯器都是基於行進行操作的,sed也是這樣。
ed中的命令說明:
ed中的操作分兩部分,一是位址操作,二是對行的修改操作。
以下為ed的刪除命令
root@guest-virtual-machine:/home/guest/shell# ed test.sed399 #顯示的是檔案中的字元的個數
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為test11總用量 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總結說明:開始處的「g」為全域性命令,表示匹配所有的這個(字元,或是正則)位址,結尾處的「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?
g/test/s//test1/g以下為grep命令在實際中的應用:(查詢結果會高亮顯示)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?
root@guest-virtual-machine:/home/guest/shell# grep 'test' test.sedsed 的使用方法,替換命令。(一般使用『』將命令進行處理,也可用「」)-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
root@guest-virtual-machine:/home/guest/shell# cat edtest可以直接採用檔案的形式驚醒匹配,將sed的引數(規則,正規表示式等)寫在乙個檔案中,然後通過以下命令進行呼叫: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 -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的所有行的內容 不使用!取反列印出的內容 ...