sed
1.sed
1.1認識sed
sed 是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為「模式空間」(patternspace ),接著用sed 命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。然後讀入下行,執行下乙個迴圈。如果沒有使諸如『d』 的特殊命令,那會在兩個迴圈之間清空模式空間,但不會清空保留空間。這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重定向儲存輸出或-i。
功能:主要用來自動編輯乙個或多個檔案, 簡化對檔案的反覆操作
1.2使用sed
1.2.1 常用選項options
-n:不輸出模式空間內容到螢幕,即不自動列印,只列印匹配到的行
-e:多點編輯,對每行處理時,可以有多個script
-f:把script寫到檔案當中,在執行sed時-f 指定檔案路徑,如果是多個script,換行寫
-r:支援擴充套件的正規表示式
-i:直接將處理的結果寫入檔案
-i.bak:在將處理的結果寫入檔案之前備份乙份
1.2.2位址定界
。 #: 指定的行
。 /pattern/:被此處模式所能夠匹配到的每一行
~:步進
。sed -n 『1~2p』 只列印奇數行 (1~2 從第1行,一次加2行)
。sed -n 『2~2p』 只列印偶數行
1.2.3 編輯命令command
d:刪除模式空間匹配的行,並立即啟用下一輪迴圈
p:列印當前模式空間內容,追加到預設輸出之後
a:在指定行後面追加文字,支援使用\n實現多行追加
i:在行前面插入文字,支援使用\n實現多行追加
c:替換行為單行或多行文字,支援使用\n實現多行追加
w:儲存模式匹配的行至指定檔案
r:讀取指定檔案的文字至模式空間中匹配到的行後
=:為模式空間中的行列印行號
!:模式空間中匹配行取反處理
s///:查詢替換,支援使用其它分隔符,如:s@@@,s###;
加g表示行內全域性替換;
在替換時,可以加一下命令,實現大小寫轉換
\l:把下個字元轉換成小寫。
\l:把replacement字母轉換成小寫,直到\u或\e出現。
\u:把下個字元轉換成大寫。
\u:把replacement字母轉換成大寫,直到\l或\e出現。
\e:停止以\l或\u開始的大小寫轉換
1.3 sed用法演示
1.3.1 常用選項options演示
1.[root@along ~]# cat demo
2.aaa
3.bbbb
4.aabbccdd
5.[root@along ~]# sed 「/aaa/p」 demo #匹配到的行會列印一遍,不匹配的行也會列印
6.aaa
7.aaa
8.bbbb
9.aabbccdd
10.[root@along ~]# sed -n 「/aaa/p」 demo #-n不顯示沒匹配的行
11.aaa
12.[root@along ~]# sed -e 「s/a/a/」 -e 「s/b/b/」 demo #-e多點編輯
13.aaa
14.bbbb
15.aabbccdd
16.[root@along ~]# cat sedscript.txt
17.s/a/a/g
18.[root@along ~]# sed -f sedscript.txt demo #-f使用檔案處理
19.aaa
20.bbbb
21.aabbccdd
22.[root@along ~]# sed -i.bak 「s/a/a/g」 demo #-i直接對檔案進行處理
23.[root@along ~]# cat demo
24.aaa
25.bbbb
26.aabbccdd
27.[root@along ~]# cat demo.bak
28.aaa
29.bbbb
30.aabbccdd
shell四劍客之sed
格式 sed nefri 動作 其中n e f r i 動作有a,i,c,p,s n 預設把sed命令執行的結果,與原來的資料一起輸出到螢幕,如果加了 n,則只顯示sed處理後的內容 sed n 1p sed.txt a 在匹配的當前行的後面新增內容,add sed ahelloworld sed....
shell四劍客之sed
sed是乙個非互動式文字編輯器,它一次處理一行內容。作用 編輯乙個或多個檔案,簡化對檔案的反覆操作 編寫轉換程式等 在處理文字時把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 緊接著用sed命令處理緩衝區中的內容,處理完後把緩衝區的內容輸出至螢幕或寫入檔案。預設輸出到螢幕的文字已經修改,但檔案內容...
Linux四劍客之awk和sed
做資料統計,檔案日誌分析 基本操作 1 列印檔案中的某一列 awk test.txt 2 列印檔案的最後一列 awk test.txt 3 列印檔案的第一列並且擷取冒號之前的 awk f etc passwd head 5 4 列印檔案的第一列和最後一列並且擷取冒號之前的 awk f etc pas...