sed是stream editor 流編輯器的縮寫,是文本處理很重要的一個工具,它完美的能夠配合正則表達式去使用。下面介紹sed經常使用的技術。正則表達式
sed的動做下面幾個用法less
a: 新增,a後面能夠跟字符串,字符串會在目前的下一行出現編輯器
例子: nl /etc/passwd | sed '2a i love it' | less
ide
nl是將文件的行號打開,這樣就在文件的第二行的下一行加入了「i love it」這個字符串,而且我less分行顯示出來。
工具
d: 刪除
this
例子: nl /etc/passwd | sed '2,6d' | less
字符串
將文件的第2到第6行的內容刪除而且分行顯示。
string
i:插入,後面能夠跟字符串,字符串會在目前的上一行出現it
例子: nl /etc/passwd | sed '2i i love it' | less
class
nl是將文件的行號打開,這樣就在文件的第二行的上一行加入了「i love it」這個字符串,而且我less分行顯示出來。
p: 打印,一般帶上-n的參數,意思是隻顯示發生變化的行顯示。
例子:nl /etc/passwd | sed -n '2,7p'
將文件第2到7行打印出來
c:替換,c後接字符串,直接替換選中行的所有內容
例子:nl /etc/passwd | sed '2,5c i want replace this' | less
將文件的第2到5行的內容換成「i want replace this」這個字符串。
s:替換,最經常使用的參數,能夠搭配正則表達式
1.替代給定文本中的字符串,只將每一行中的第一處符合樣式的內容替換掉。
例子: 我有一個文件叫file,內容以下:
wwwmmmmm
qwwwmmmmm
qqwwwmmmmm
如今我想把每一行的第一個w換成b
sed 's/w/b/' file | less
這樣就可達到目地,只將每一行的第一個w換成b,而不是所有替換
2.替代給定文本中的字符串,全文替代。
例子:仍是上面的file,如今須要把全部的w換成b
sed 's/w/b/g' file | less
就是在上面的基礎加上一個g就能夠達到目地
擴展 : sed 's/pattern/replace_string/Ng' file
N的意思是從N處開始替換,例如sed 's/w/b/3g' aa 意思是我從每一行的第三個字符開始替換,忽略前面的字符。
3.移除空白行,使用正則表達式
sed '/^$/d' file
sed -i 得意思是直接修改文件內容,前面的也能夠帶上-i 的參數,就是直接去修改文件自己的內容了。而不是由屏幕輸出。