前段時間學了下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