Linux之小小 sed 大動作

同grep一樣,sed命令的功能也非常強大,這裏我僅僅介紹常用的一個命令:

我們看這樣的一個文檔:在終端輸入:root@linux-VirtualBox:~# cat a.txt 
111
333444
333

然後:root@linux-VirtualBox:~# sed "s/333/222/g" a.txt 
111
222444
222

再查看:root@linux-VirtualBox:~# cat a.txt 
111
333444
333

居然沒修改;其實sed是非交互式的編輯器。它不會修改文件,除非使用shell重定向來保存結果。默認情況下,所有的輸出行都被打印到屏幕上。

想修改原文件,則需加入 參數 i

如:root@linux-VirtualBox:~# sed -i "s/333/222/g" a.txt 
root@linux-VirtualBox:~# 

查看:root@linux-VirtualBox:~# cat a.txt 
111
222444
222

修改完成,其實後面也可以使用 通配符 * ,以及 -r 參數。

如:

sed -i "s/1111/2222/g" `grep "1111" * -rl` //注意中英文符號

-i 表示 inplace edit,就地修改文件
-r 表示搜索子目錄
-l 表示輸出匹配的文件名

這個命令比較危險,注意備份。修改當前目錄及其子目錄下所有子目錄下所有文件中的字符串“1111”爲“2222”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章