centos 7中的文字處理工具sed命令的使用

2021-09-25 20:00:15 字數 3019 閱讀 2707

sed是乙個強大而簡答的文字解析轉換工具,可以讀取文字,並根據指定的條件對文字內容進行編輯(刪除、替換、新增、移動等),最後輸出所有行或者僅輸出處理的某些行。sed也可以在無互動的情況下實現相當複雜的文字處理操作,被廣泛應用於shell指令碼中,用以完成各種自動化處理任務。

sed的工作流程主要包括讀取、執行和顯示三個過程:

在所有的檔案內容都被處理完之前,上述過程將重複執行,直至所有內容被處理完。

預設情況下,所有sed命令都是在模式空間內執行的,因此輸入的檔案並不會發生任何變化(也就是說只是輸出的內容變了,而實際的原始檔並沒有被改動),除非使用重定向儲存輸出。

sed命令的使用:

一般有兩種使用格式:

sed  [選項]   '操作'  引數 

sed [選項] -f 指令碼檔案 引數

常見的sed命令選項主要包含以下幾種:

-h或--help:顯示幫助;

-n、--quiet或silent:表示僅顯示處理後的結果;

「操作」用於指定對檔案操作的動作行為,也就是sed命令。通常情況下採用的「[n1],[n2]」操作引數的格式。n1、n2是可選的,不一定會存在,代表選擇進行操作的行數,如操作需要在5~20行之間進行,則表示為「5,20 動作行為」。常見的操作包括以下幾種:

用法示例:

①、sed命令基本語法:

[root@localhost ~]# sed -n 'p' test.txt              #輸出所有內容,相當於cat testtest.txt

[root@localhost ~]# sed -n '3p' test.txt #輸出第三行。

[root@localhost ~]# sed -n '3,5p' test.txt #輸出3~5行。

[root@localhost ~]# sed -n 'p;n' test.txt #輸出所有奇數行,n表示讀入下一行資料。

[root@localhost ~]# sed -n 'n;p' test.txt #輸出所有偶數行,n表示讀入下一行資料。

[root@localhost ~]# sed -n '1,5' test.txt #輸出1~5行之間的奇數行,第(1,3,5行)。

[root@localhost ~]# sed -n '10,$' test.txt #輸出第10行至檔案尾之間的偶數行。

②、sed命令與正規表示式結合使用:

[root@localhost ~]# sed -n '/the/p' test.txt             #輸出包含the的行

[root@localhost ~]# sed -n '4,/the/p' test.txt #輸出第4行至末尾第乙個包含the的行。

[root@localhost ~]# sed -n '/the/=' test.txt #輸出包含the的行所在的行號,「=」用來輸出行號

[root@localhost ~]# sed -n '/^pi/p' test.txt #輸出以pi開頭的行

[root@localhost ~]# sed -n '/[0-9]$/p' test.txt #輸出以數字結尾的行

[root@localhost ~]# sed -n '/\/p' test.txt #輸出包含單詞wood的行,\表示單詞邊界。

③、刪除符合條件的文字(以下操作只是輸出時刪除,若要刪除原始檔,則需結合「-i」選項):

[root@localhost ~]# nl test.txt | sed '3d'       #刪除第三行

[root@localhost ~]# nl test.txt | sed '3,5d' #刪除第3~5行

[root@localhost ~]# nl test.txt | sed '/cross/d' #刪除包含cross的行

#若要刪除不包含cross的行,用!符號表示取反操作,如'/cross/! d'

[root@localhost ~]# sed '/^[a-z]/d' test.txt #刪除以小寫字母開頭的行

[root@localhost ~]# sed '/\.$/d' test.txt #刪除以「 . 」結尾的行

[root@localhost ~]# sed '/^$/d' test.txt #刪除所有空行

④、替換符合條件的文字:使用sed命令進行替換操作時需要用到s(字串替換)、c(整行/整塊替換)、y(字元轉換)命令選項,常用的語法如下:

⑤、遷移符合條件的文字(相當於windows中的剪下):

h,複製到剪貼簿;g、g,將剪下板中的資料覆蓋/追加至指定行;w,儲存為檔案;r,讀取指定檔案;a,追加指定內容。

[root@localhost ~]# sed '1,5;17g' test.txt                #將第1~5行內容轉移至第17行後

[root@localhost ~]# vim opt.list

1,5h

1,5d

17g[root@localhost ~]# sed -f opt.list test.txt #使用「-f」選項來呼叫指令碼。

文字處理工具

參考 man,info,magedu講義 宣告 以下英文純屬個人翻譯,英文b級,歡迎糾正,以下內容純屬個人理解,並沒有對錯,只是參考,盜版不糾,才能有限,希望不誤人子弟為好。these commands read and write entire files,possibly transformin...

文字處理工具

linux 上文字處理三劍客 grep 文字過濾工具 模式 pattern awk linux上的實現為gwak 文字報告生成器 格式化文字 正規表示式 regual expression regexp 由一類特殊字元及文字所編寫的模式,其中有些字元表示其字面意義,grep options colo...

文字處理工具

文字處理工具 檔案內容 cat,more,less 檔案擷取 head,tail 按列抽取 cut 排序和統計 sort,wc 按關鍵字抽取 grep 檔案檢視 cat,nl,tac,rev catnl tacrev,每一行的內容會倒序顯示 more,分頁顯示 less,分頁顯示,到最後一行不會退出...