接著用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...