1. 程式人生 > >Linux中sed的用法

Linux中sed的用法

sed

1、sed 流編輯器,實現對文字的增刪改替換查,能同時處理多個文件多行的內容,可以不對原文件改動,把整個文件輸入到屏幕,可以把只匹配到模式的內容輸入到屏幕上。還可以對原文件改動,但是不會再屏幕上返回結果。


2、命令格式:sed [選項] ‘[命令]’[文件]

sed命令的常用選項:

-n :只打印模式匹配的行,一般與 p 一起使用。如:sed -n ' 2p ' /data 表示輸出/data的第二行,如:sed -n '20,30p' /data/boy顯示 /data/boy的20到30行。

-e :進行多項編輯,即對輸入行應用多條sed命令時使用,此為默認選項。如:

sed -e '/^#/d' -e '/^$/d' /data/boy表示刪除空格的行和#開頭的行。


-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實現多行插入;
c \text:將指定行的內容替換為文本text; w /file:write, 保存模式空間中匹配到的行至指定的文件中;

r /file :read, 將指定文件的內容讀取至當前模式空間中被匹配到的行後面,常用於實現文件合並;

sed -i '/Ethernet/r myfile' test 匹配Ethernet的行,讀進來另一個文件的內容,讀進來的文件的內容會插入到匹配Ethernet的行後

s/pattern/replaces/:查找pattern用replaces替換;分隔符可自行指定,常用的分隔符有/, #, @等;
替換標記: g:全局替換; w /file:將替換的結果保存至指定文件中;sed -i 's/pattern/replaces/w my.txt' test 將替換後的結果保存到my.txt p:顯示替換成功的行;

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 1pattern 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的用法