前言:
sed是一種流編編器,它是文本處理中非常中的工具,能夠完美的配合正則表達式便用,功物能不同凡響。
處理時,把當前處理的行存儲在臨時緩衝區中,稱爲”模式空間”( oattern space),接看用sed命令處理緩衝區中的內容,處理成後,把緩衝區的內容送往屏幕顯示。
接着理下一行,這樣不斷重複,直到文件末。文件內容沒有改改變,除非使用了寫入的命令,將內容更新。
定址用於決定對哪些行進行編輯。地址的形式可以是數字、正則表達式、或二者的結合。如果沒有指定地址,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
給文件追加文件,寫入文件:
sed -i -e '1i happy' -e '$a new year' 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
詳細參數
sed命令功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
sed常見命令參數
1 2 3 4 5 6 7 |
|
1 |
|
sed 中可能遇到的坑
字符轉義問題:
1 . 替換 [ ] 時
你想把中括號替換,它是一個不折不扣的叛徒,它需要轉義纔行 例:
sed 's/\[/aaa/g'
2. 替換(){}時,則不需要
3 記得字符轉義