sed用法小結

前段時間學了下awk和sed這兩個小工具,順手寫下心得體會吧,awk的已經寫完了,接下來就是sed,很少說,開始吧~-~正則表達式

總得來講,awk側重於處理域,而sed更側重於處理行。與awk相似,sed也是逐行進行處理,下面說下sed的主要用法。bash

1、參數ide

-n:安靜模式,當加上此參數時,sed處理的結果不會輸出到屏幕上,除非sed命令中指明要打印的行,如:工具

sed -n '1,3p' test.txt

會打印出1-3行,但3d

sed '1,3p' test.txt

除了會打印1-3行以外,還會打印出整個文件。字符串

sed -n 's/haha/HAHA/g' test.txt

上述命令就不會輸出任何結果,但it

sed -n 's/haha/HAHA/gp' test.txt

會打印出通過處理的行,而class

sed 's/haha/HAHA/g' test.txt

會打印出全部行,無論有沒有通過處理。test

-i:直接在原文件上進行修改,慎重!awk

-r:使用擴展正則表達式

2、主要用途

一、輸出指定行:

sed -n '1,3p' test.txt

輸出1-3行

sed -n '/^haha/p' test.txt
輸出行首爲haha的行
二、刪除指定行:
sed '1,3d' test.txt

刪除1-3行

三、在指定行後添加內容:

sed '1a hello, world' test.txt

在第一行以後添加hello, world

四、替換指定行:

sed '1,2c hi' test.txt

將1-2行替換爲hi

五、替換文本

這是我認爲sed最重要的功能!!!

假設test.txt中內容爲:

0123##abcd##

1234##abcd##

cat test.txt | sed 's/^[0-9][0-9]*//g' | sed 's/##/ /g'

會將test.txt中行首數字刪掉,並將##替換爲空格,若是涉及到\d、\w等擴展正則表達式,加上-r參數便可

六、在指定字符串前、後添加字符串

sed 's/$/& hello/g' test.txt
在每行以後添加hello
sed 's/^/hello &/g' test.txt
在每行以前添加hello
相關文章
相關標籤/搜索