高階編輯命令
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...