sed命令用法

2021-09-01 01:19:42 字數 2335 閱讀 9216

接著用sed命令處理快取區的內容,處理完成後,把快取區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到

檔案末尾。檔案內容本身並沒有改變。

使用sed命令有2種形式:

1.sed [options] 'commamd' file

2.sed [options] -f script file

例子:sed '2d' test.txt //刪除test.txt檔案中的第2行

sed '2,$d' test.txt //刪除第2行到最後一行的所有內容,$代表最後一行

sed '/test/'d test.txt //刪除指定檔案中所有包含test的行

sed 's/test/mytest/g' test.txt //在整行範圍內把test替換為mytest。如果沒有g,則只替換每一行第乙個匹配的

test

sed -i 選項會直接操作檔案,而不會把它讀入快取區

sed '$a sdf' test.txt //在最後一行後面新增一行,內容為sdf

a表示,在選擇行的後面新增一行,而不是在選定行的末尾新增字串,所'$a \test'和'$a test'效果一樣,都是添

加一行如果一次新增多行,可以用\表示,它表示換行符

sed '1 a\

dd1\

dd2\

dd3' test.txt

不能在一行寫成這樣: sed '1 a \dd1\dd2\dd3' test.txt,這樣會當做一行內容錯誤,且結果是新增了一行內容「

dd1dd2dd3」

-n表示在標準輸出上輸出特定的行,例如被p選擇的行

sed -n '/line/ p' test.txt //列印包含line的所有行

sed -n '3,6 p' test.txt // 列印第3行到第6行

sed '5 q' test.txt //列印頭5行

如果乙個檔案hello裡面的內容是這樣的

3,6 p

則可以這樣使用:

sed -n -f hello test.txt //-f表示要使用的程式名稱

sed '1 i cxm' test.txt //在第1行的前面插入1行,行的內容為cxm

sed '1 c hahah' test.txt //把第1行的內容替換為hahah

sed 's/sd/kkk/ w tmp' test.txt //把修改過的行輸出到tmp檔案中

sed '2,4 w tmp2' test.txt //把2到4行的內容輸出到tmp2檔案中

sed '2,4 !w t***' test.txt //把沒有選中的行輸出到t***檔案中

sed 's/^./\t&/' test.txt //(^.)可以匹配第乙個字元不是空格的所有行,\t代表乙個tab字元,&表示正規表示式

匹配到真的值,用於縮排。

sed -n 'n;p' test.txt //原本sed的執行原理是逐行讀取到模式空間,n呢就促使sed把下一行內容也同時讀取到模

式空間待命。但是,列印只列印最後一行。到了最後一行,為什麼沒有輸出呢?原來n還有另外乙個特性:當無法處

理下一行內容時,n則會中止退出,所以後面的命令也不會再執行。

sed -n '$!n;p' test.txt //$!n表示對最後一行不再執行n命令。

sed一般工作在pattern space,每次從input中取一行資料到pattern space中,然後經過一些處理,將一行資料放入

output中,然後output會輸出到螢幕(預設為螢幕,也可以為檔案),此時pattern space還儲存著這一行資料,直

到input再放入第二行資料取代第一行資料。

hold space可以理解為sed的緩衝區

g:將hold區的內容複製到pattern區中。pattern區中的原來的內容會丟失;

g:將乙個換行符和hold區中的內容追加到pattern區中的內容之後;

h:將pattern區中的內容複製到hold區中。hold區中的原來內容將會消失;

h:將乙個換行符合pattern區中的內容追加到hold區中的內容的之後;

x:互動pattern區和hold區中的內容;

2,$g

h$!d

例如:sed '2,$g;h;$!d' cxm.sh

每一行的的內容都要經過這三個命令處理,hold space裡面一般不儲存內容,除非你自己往裡面新增內容。如果不使用d刪除,那麼每次處理後pattern區中的內容都會顯示出來

上面的指令可以把檔案的內容倒過來顯示,!表示取非,即除了最後一行,其它的行都刪除

sed 's/ *$//' 2個空格後接*$,表示行末的乙個或多個空格。對清理行末的空格非常方便

不管指令有多麼複雜,這些指令每次都順序處理一行內容。

sed命令基本用法

sed是乙個飛互動式文字編輯器 sed只對緩衝區中原始檔案的副本進行編輯,並不編輯原始的檔案 呼叫sed的方法 在shell命令列輸入命令呼叫sed,格式為 sed 選項 sed命令 輸入檔案 sed 選項 f sed指令碼檔案 輸入檔案.sed 指令碼檔案 輸入檔案第 種方式的sed指令碼檔案與第...

sed命令基本用法

1 sed stream editor 行編輯器。工作原理 預設不編輯原始檔,僅僅對模式空間的資料做處理。一行行將檔案讀入模式空間,處理完後再將模式空間的內容輸出一遍。sed和grep awk編輯器都是shell程式設計中的重要工具。2 sed語法 sed option addresscommand...

SED命令用法整理

sed started q 匹配到started字串則退出sed命令 sed started 同時匹配到started和in兩個字元時則退出sed命令 sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed...