sed是一種流編編器,它是文字處理中非常中的工具,能夠完美的配合正規表示式便用,功物能不同凡響。
處理時,把當前處理的行儲存在臨時緩衝區中,稱為」模式空間」( oattern space),接看用sed命令處理緩衝區中的內容,處理成後,把緩衝區的內容送往螢幕顯示。
接著理下一行,這樣不斷重複,直到檔案末。檔案內容沒有改改變,除非使用了寫入的命令,將內容更新。
sed 的功能很強大在 指令碼中 獲取檔案的列印,追加,替換 ,刪除
我舉幾個我常用的幾個方法場景
列印對應檔案第三行
sed -n '3p' /var/log/yum.log
只檢視檔案的第3行到第9行
sed -n '3,9p' /var/log/yum.log
過濾特定字串,顯示正行內容
sed -n '/root/p' yum.log
顯示包含"hhh"的行到包含"omc"的行之間的行
sed -n '/hhh/,/omc/p' yum.log
僅僅顯示匹配字串的行號
sed -n '/root/p' yum.log
這裡需要分析一下 首先 -i 的含義是說是插入的模式 -e 代表多編輯意思,就是說同時修改不同位置檔案。 「 1 i 」 1 的意思代表第一行 i 表示插入,他會插入第一行位置,如果是a 他會插入在第一行的末尾 , 『 $ a』 $是正規表示式中的一種,表示所有,這個請小夥伴補充一下,正則的知識
在檔案第一行和第四行的每行下面新增hahaha
sed '1,4i hahaha' yum.log
有人會想在檔案的倒數第二行新增內容實現的方法
sed '$i 你要新增的內容' group.xml
sed -i 's/root/world/g' yum.log
把 檔案中的 root 替換 為 world /g是全域性的意思 s 查詢的意思
sed -i '5,10 s/root/ftl/g' yum.log
替換 5 到 10 行的 root 變為ftl
刪除 3 行到9 行
sed -i '3,9d' /var/log/yum.log
刪除包含"hhh"的行到包含"omc"的行之間的行
sed -i '/hhh/,/omc/d' yum.log
命令 功能
a\ 在當前行後新增一行或多行。多行時除最後一行外,每行末尾需用「\」續行
c\ 用此符號後的新文字替換當前行中的文字。多行時除最後一行外,每行末尾需用"\"續行
i\ 在當前行之前插入文字。多行時除最後一行外,每行末尾需用"\"續行
d 刪除行
h 把模式空間裡的內容複製到暫存緩衝區
h 把模式空間裡的內容追加到暫存緩衝區
g 把暫存緩衝區裡的內容複製到模式空間,覆蓋原有的內容
g 把暫存緩衝區的內容追加到模式空間裡,追加在原有內容的後面
l 列出非列印字元
p 列印行
n 讀入下一輸入行,並從下一條命令而不是第一條命令開始對其的處理
q 結束或退出sed
r 從檔案中讀取輸入行
! 對所選行以外的所有行應用命令
s 用乙個字串替換另乙個
g 在行內進行全域性替換
w 將所選的行寫入檔案
x 交換暫存緩衝區與模式空間的內容
y 將字元替換為另一字元(不能對正規表示式使用y命令)
p==print
d:delete
=:列印匹配行的行號
-n 取消預設的完整輸出,只要需要的
-e 允許多項編輯
-i 修改檔案內容
-r 不需要轉義
注意:& 符號在
sed
命令中代表上次匹配的結果
1 . 替換 [ ] 時
你想把中括號替換,它是乙個不折不扣的叛徒,它需要轉義才行 例:
sed 's/\[/aaa/g'
2. 替換(){}時,則不需要
3 記得字元轉義
linux sed命令的用法
sed基本用法 sed stream editor 行編輯器 全屏編輯器 vi sed 模式空間 預設不編輯原檔案,僅對模式空間中的資料做處理 而後,處理結束後,將模式空間列印至螢幕 sed options addresscommand file n 靜默模式,不再預設顯示模式空間中的內容 i 直接...
linux sed 命令的使用
首先可以在在linux 使用man sed 個人建議,盡可能去理解man sed 的內容 sed命令列格式為 sed nefri command 輸入文字 檔案 常用選項 n 取消預設的輸出,使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin的資料一般都會被列出到螢幕上。但...
Linux sed命令的使用
1.功能簡介 sed stream editor 是一種流檔案編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 pattern space 接著用sed命令處理緩衝區中的內容,kzkomrid處理完成後,把緩衝區的內容送往螢幕,接著處理下一行,直到檔案末尾。檔案內...