Linux中sed的用法
阿新 • • 發佈:2018-04-09
sed1、sed 流編輯器,實現對文字的增刪改替換查,能同時處理多個文件多行的內容,可以不對原文件改動,把整個文件輸入到屏幕,可以把只匹配到模式的內容輸入到屏幕上。還可以對原文件改動,但是不會再屏幕上返回結果。 sed -e '/^#/d' -e '/^$/d' /data/boy表示刪除空格的行和#開頭的行。 c \text:將指定行的內容替換為文本text; w /file:write, 保存模式空間中匹配到的行至指定的文件中; 替換標記: g:全局替換; w /file:將替換的結果保存至指定文件中;sed -i 's/pattern/replaces/w my.txt' test 將替換後的結果保存到my.txt中 p:顯示替換成功的行;
2、命令格式:sed [選項] ‘[命令]’[文件]
sed命令的常用選項:
-n :只打印模式匹配的行,一般與 p 一起使用。如:sed -n ' 2p ' /data 表示輸出/data的第二行,如:sed -n '20,30p' /data/boy顯示 /data/boy的20到30行。
-e :進行多項編輯,即對輸入行應用多條sed命令時使用,此為默認選項。如:
-f :將sed的動作寫在一個腳本文件內,用–f filename 執行filename內的sed動作。
-r :支持擴展表達式
-i :直接修改文件內容,如:sed -i s#old#new#g
常用基本命令:
d :delete, 刪除匹配到的行; p :print, 顯示匹配到的行;通常 p 會與參數 sed -n 一起用 a \text:append, 在指定行後追加文本text,支持使用\n實現多行追加; i \text :insert, 在指定行前插入文本text,支持使用\n實現多行插入;r /file :read, 將指定文件的內容讀取至當前模式空間中被匹配到的行後面,常用於實現文件合並;
sed -i '/Ethernet/r myfile' test 匹配Ethernet的行,讀進來另一個文件的內容,讀進來的文件的內容會插入到匹配Ethernet的行後
s/pattern/replaces/:查找pattern用replaces替換;分隔符可自行指定,常用的分隔符有/, #, @等;
y:用於(對應)轉換字符;
=:打印行號; ! :匹配後取反; l :打印行號,並顯示控制字符; q:讀取匹配到的行後退出;
3、sed在文件中查詢文本的方式
x/p | 查詢第x行 | sed -n '2p ' /data |
x,y/p | 查詢從x到y行 | sed -n '1,3p ' /data |
/pattern/p | 查詢包含pattern的行 | sed -n '/pattern/p' /data |
/pattern 1/,/pattern 2/p | 查詢包含pattern 1或pattern 2的行 | sed -n '/pn1/,/pn2/p' /data |
/pattern/,xp | 查詢從包含pattern的行到x行 | sed -n '/pn/,5p' /data |
x,/pattern/p | 查詢從x到包含pattern的行 | sed -n '5,/pn/p' /data |
x,y!p | 查詢不包含指定行號x和y的行 | sed -n '5,8!p' /data |
Linux中sed的用法