文字處理之SED

2021-10-05 09:18:24 字數 2591 閱讀 2577

高階編輯命令

stream editor, 行編輯器

sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時

緩衝區中,稱為「模式空間」(pattern space),接著用sed命令處理緩衝區中的

內容,處理完成後,把緩衝區的內容送往螢幕。然後讀入下行,執行下乙個迴圈。

如果沒有使諸如『d』的特殊命令,那會在兩個迴圈之間清空模式空間,但不會清

空保留空間。這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重

定向儲存輸出。

功能:主要用來自動編輯乙個或多個檔案,簡化對檔案的反覆操作,編寫轉換程式等

sed [option]..

.'script' inputfile.

..

常用選項:

-n 不輸出模式空間內容到螢幕,即不自動列印

-e 多點編輯

-f /path/script_file 從指定檔案中讀取編輯指令碼

-r 支援使用擴充套件正規表示式

-i.bak 備份檔案並原處編輯

script:

'位址命令'(1

(2#:指定的行,$:最後一行

/pattern/:被此處模式所能夠匹配到的每一行(3

#,##,

+#/pat1/

,/pat2/

#,/pat1/(4

)~:步進1~

2 奇數行2~

2 偶數行

d 刪除模式空間匹配的行,並立即啟用下一輪迴圈

p 列印當前模式空間內容,追加到預設輸出之後

a [\]text 在指定行後面追加文字,支援使用\n實現多行追加

i [\]text 在行前面插入文字

c [\]text 替換行為單行或多行文字

w /path/file 儲存模式匹配的行至指定檔案

r /path/file 讀取指定檔案的文字至模式空間中匹配到的行後

= 為模式空間中的行列印行號

! 模式空間中匹配行取反處理

s/// 查詢替換,支援使用其它分隔符,s@@@,s###

替換標記:

g 行內全域性替換

p 顯示替換成功的行

w /path/file 將替換成功的行儲存至檔案中

sed 『2p』 /etc/passwd

sed -n 『2p』 /etc/passwd

sed -n 『1

,4p』 /etc/passwd

sed -n 『/root/p』 /etc/passwd

sed -n 『2

,/root/p』 /etc/passwd 從2行開始

sed -n 『/

^$/=』 file 顯示空行行號

sed -n -e 『/

^$/p』 -e 『/

^$/=』 file

sed『/root/a\superman』 /etc/passwd行後

sed 『/root/i\superman』 /etc/passwd 行前

sed 『/root/c\superman』 /etc/passwd 代替行

sed 『/

^$/d』 file

sed 『1

,10d』 file

nl /etc/passwd | sed 『2

,5d』

nl /etc/passwd | sed 『2a tea』

sed 's/test/mytest/g' example

sed –n 『s/root/

&superman/p』 /etc/passwd 單詞後

sed –n 『s/root/superman&

/p』 /etc/passwd 單詞前

sed -e 『s/dog/cat/』 -e 『s/hi/lo/』 pets

sed –i.bak 『s/dog/cat/g』 pets

p: 列印模式空間開端至\n內容,並追加到預設輸出之前

h: 把模式空間中的內容覆蓋至保持空間中

h:把模式空間中的內容追加至保持空間中

g: 從保持空間取出資料覆蓋至模式空間

g:從保持空間取出內容追加至模式空間

x: 把模式空間中的內容與保持空間中的內容進行互換

n: 讀取匹配到的行的下一行覆蓋至模式空間

d: 刪除模式空間中的行

d:如果模式空間包含換行符,則刪除直到第乙個換行符的模式空間中的文字, 並不會讀取新的輸入行,而使用合成的模式空間重新啟動迴圈。如果模式空間不包含換行符,則會像發出d命令那樣啟動正常的新迴圈

sed -n 'n;p' file

sed '1!g;h;$!d' file

sed『n;d』file

sed '$!n;$!d' file

sed '$!d' file

sed 『g』 file

sed 『g』 file

sed 『/

^$/d;g』 file

sed 'n;d' file

sed -n '1!g;h;$p' file

Shell之sed文字處理

sed基本用法 作用 格式 定址方式 sed過濾指令 常見的處理動作 文字塊處理 插入 替換行 多行文字 stream editor,流式編輯器 非互動,基於模式匹配過濾及修改文字 逐行處理,並將結果輸出到螢幕 可實現對文字的輸出 刪除 替換 複製 剪下 匯入 匯出等各種操作 vim無法在指令碼中使...

linux 文字處理sed

ed與sed的區別 sed是從ed發展來的,ed是針對當前行進行操作 sed是面向字元流的。sed和ed的應用定址有很大的區別。在ed中沒有指定位址的命令只影響當前行。sed遍歷檔案,每次讀取一行,這樣每行都是當前行,每行都應用這個命令,結果是sed對檔案中的每一行都應用了ed中沒有位址的命令。如s...

文字處理sed 實踐

利用sed 取出ifconfig命令中本機的ipv4位址 root oracle ifconfig eth7 eth7 link encap ethernet hwaddr 00 50 56 85 6e a1 inet addr 192.168.97.164 bcast 192.168.99.255...