正則中sed工具

sed工具介紹

  • 介紹

sed不只可以實現如grep的匹配功能,並且還能實現文本替換功能等。正則表達式

sed的匹配功能

  • 實驗概覽
sed -n '5'p test.txt 
 sed -n '1,5'p test.txt
 sed -n '1,$'p test.txt
 sed -n '/root/'p test.txt
 sed -n '/^1/'p test.txt
 sed -n 'in$'p test.txt
 sed -n '/r..o/'p test.txt
 sed -n 'oo*'p test.txt
 sed -e '1'p -e '/111/'p -n test.txt

打印某行

  • 語法sed -n 'n'p fiename

p: 參數p表示打印
-n:只打印咱們指定的行,無關選項不加。
不加-n:會在指定行,後面顯示因此其餘的行。
'n':單引號裏的n表示第幾行;
'1,$':表示打印全部,**$**表示前面指定1行的後面的全部行
:能夠指定一個範圍打印,如 sed -n '1,3' test.txt工具

打印包含某個字符串的行

  • 語法sed -n '/root/'p fiename

//:表示匹配字符串
: 在打印字符串時,在grep中的特殊字符(&*等)一樣能在sed中使用 。
-e:加上此選項可以同時實現多個行爲。在匹配行的同時匹配一個字符串,若兩個不一樣的表達式,都匹配的是同一個字符串或行,那麼將會打印兩次。
I,大i 匹配時不區分大小寫,如sed -n '/bus/'Ip /etc/passwdcode

  • 特殊符號+

在sed使用特殊符號+匹配時,須要加脫義符號,如 sed -n '/r+t/'p test.txt;
sed -nr: 加r命令後,就不用加脫義字符blog

刪除某些行或字符串

  • 語法sed '1,20'd /etc/passwd

d,表示刪除動做,這個操做不會修改文件的實際內容文檔

  • 直接刪除文件選項

-i:會直接刪掉文件內容,而且能指定字符串名字符串

sed的替換功能

全局替換

  • 語法:sed '1,10s/root/toor/g' test.txt

參數s:表示替換的動做
參數g:表示本行全局替換,如不加g則替換本行常出現的第一個字符串test

  • 替換也是可以使用正則表達式的

如:sed -r '1,10s/ro+/r/g' test.txt :這裏由於sed 使用+ 因此用了 -r選項(取消脫義字符)sed

調換兩個字符的位置

  • 示例:準備將途中的兩個字符串調換位置,包括後面的全部字符串一塊兒首尾調換

  • 正確命令以下
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
  • 解釋

1.格式
s//:表示所有,不指定範圍就是所有
-r:取消脫義符號
2.在調換前,咱們要先用表達式,表答咱們須要調換的字符串
s//:表示所有,不指定範圍就是所有
[^:]:表示一個非冒號的字符
[^:]+:加號表示一個或多個 ,如root
([^:]+):小括號表示等會咱們須要調用括號內的東西;
:表示間隔的特殊符號
*. **:表示所有匹配
(.*): 表示貪婪匹配,意爲直到最後一個冒號爲止的字符串
([^:]+):表示一個非零字符串
3.調換位置
\3:\2:\1/:這裏的意思是3個字符串的位置;本應該是123 ,可是咱們要給他們調換位置,因此變成了321,冒號是間隔符號搜索

  • 注意:脫義或者替換一些分隔符,好比用@,只要能區分開就行

把文檔裏全部的英文字母刪除

  • 實際意義就是替換爲空

如:sed 's/[a-zA-Z]//g' test.txt語法

在全部行前面加上aaa

  • 示例

head test.txt |sed -r 's/(.*)/aaa:&/' &:保存搜索字符用來替換其餘字符,如s/asd/&/,asd這成asd

相關文章
相關標籤/搜索