歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> LINUX 三劍客老二(Sed) 日常工作總結

LINUX 三劍客老二(Sed) 日常工作總結

日期:2017/3/3 12:18:17   编辑:Linux技術
一.Sed 知識預熱;
sed的處理流程,簡化後是這樣的:
1.讀入新的一行內容到緩存空間;
2.從指定的操作指令中取出第一條指令,判斷是否匹配pattern;
3.如果不匹配,則忽略後續的編輯命令,回到第2步繼續取出下一條指令;
4.如果匹配,則針對緩存的行執行後續的編輯命令;完成後,回到第2步繼續取出下一條指令;
5.當所有指令都應用之後,輸出緩存行的內容;回到第1步繼續讀入下一行內容;
6.當所有行都處理完之後,結束;
正則表達式介紹;
^錨定行的開始如:/^sed/匹配所有以sed開頭的行。
$錨定行的結束 如:/sed$/匹配所有以sed結尾的行。
.匹配一個非換行符的字符 如:/s.d/匹配s後接一個任意字符,然後是d。
*匹配零或多個字符 如:/*sed/匹配所有模板是一個或多個空格後緊跟sed的行。
[]匹配一個指定范圍內的字符,如/[Ss]ed/匹配sed和Sed。
[^]匹配一個不在指定范圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。
\(..\)保存匹配的字符,如s/\(love\)able/\1rs,loveable被替換成lovers。
&;保存搜索字符用來替換其他字符,如s/love/**&**/,love這成**love**。
\<;錨定單詞的開始,如:/\<love/匹配包含以love開頭的單詞的行。
\>;錨定單詞的結束,如/love\>/匹配包含以love結尾的單詞的行。
x\{m\}重復字符x,m次,如:/0\{5\}/匹配包含5個o的行。
x\{m,\}重復字符x,至少m次,如:/o\{5,\}/匹配至少有5個o的行。
x\{m,n\}重復字符x,至少m次,不多於n次,如:/o\{5,10\}/匹配5--10個o的行。
Sed 常用選項介紹;
sed命令行格式為:
sed [-nefri] ‘command’ 輸入文本/文件
常用選項;
-n∶取消默認的輸出,使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到屏幕上。但如果加上 -n 參數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來
-e∶進行多項編輯,即對輸入行應用多條sed命令時使用. 直接在指令列模式上進行 sed 的動作編輯
-f∶指定sed腳本的文件名. 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的sed 動作
-r∶sed 的動作支援的是延伸型正則表達式的語法。(預設是基礎正則表達式語法)
-i∶直接修改讀取的文件內容,而不是由屏幕輸出
常用命令 ;
a ∶ 新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)
c ∶ 取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行
d ∶ 刪除,因為是刪除,所以 d 後面通常不接任何內容
i ∶ 插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行)
p∶ 列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起用
s∶ 取代,可以直接進行替換的工作。通常這個 s 的動作可以搭配正則表達式。例如 1,20s/old/new/g
二.實例分享;
1.清除該文件內所有空白行;(文件內容如下所示;)



[root@xin test]# sed -i '/^$/d' test1.txt #清除文件內所有空行;



2.替換文件內所有阿拉伯數字為test;



[root@xin test]# sed -i 's/[0-9]/test/g' test1.txt #替換文件內所有阿拉伯數字為test;



3.將文件內所有小寫字母替換成123;



[root@xin test]# sed -i 's/[a-z]/123/g' test1.txt #所有小寫字母替換成123;



本文出自 “渲染不變的昨天” 博客,請務必保留此出處http://breaklinux.blog.51cto.com/8193722/1784403
Copyright © Linux教程網 All Rights Reserved