Linux中sed基礎

sed是一種流編輯器,它是文本處理中非常重要的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲“模式空間”(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接着處理下一行,這樣不斷重複,直到文件末尾。文件內容並沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反覆操作;編寫轉換程序等。

sed命令常用參數

常用命令

函數命令 說明
1,n 需要操作的行,第一行至第N行
s search 查找替換,這個命令使用最多
a append 添加
i insert 插入
c 替換
d 刪除行
p 打印

還有兩個最重要的參數
-n 使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的數據一般都會被列出到終端上。但如果加上 -n 參數後,則只有經過sed 特殊處理的那一行(或者動作)纔會被列出來。
-i 直接替換原文件,不加-i都不會修改原文件,只是輸出或者放置內存中。

sed常用命令的使用

cat test.txt
111
222
333
444
555
666
777
打印第三行至第五行
sed -n '3,5p' test.txt
333
444
555
刪除第三至第五行
sed  '3,5d' test.txt
111
222
666
777
刪除第三至第五行並修改原文件
sed -i '3,5d' test.txt
cat test.txt
111
222
666
777
第二行之前添加qqq
sed '2i qqq' test.txt
111
qqq
222
333
444
555
666
777
第二行之後添加qqq
sed '2a qqq' test.txt
111
222
qqq
333
444
555
666
777
第二行替換爲qqq
sed '2c qqq' test.txt
111
qqq
333
444
555
666
777

sed最重要的s命令,查找替換

sed “s/查找/替換/g” g表示一行全部替換,默認一行只替換第一個

cat test.txt
111
222
111
444
555
sed "s/1/php/" test.txt
php11
222
php11
444
555
sed "s/1/php/g" test.txt
phpphpphp
222
phpphpphp
444
555

跟正則相似。^表示每一行開始,$表示每一行結束。正則匹配是遵循規範的。

每一行開始加//
sed "s/^/\/\//g" test.txt
//111
//222
//111
//444
//555
每一行行尾加;
sed "s/$/;/g" test.txt
111;
222;
111;
444;
555;

替換滿足條件某一個字符

替換每一行的第二匹配字符1,替換成+
sed "s/1/+/2" test.txt
1+1
222
1+1
444
555

多個匹配替換用;隔開

把2替換成+,把4替換成-
sed "s/2/+/g;s/4/-/g" test.txt
111
+++
111
---
555

圓括號子集,在替換結果裏面使用\1 \2 \n

cat test.txt
1hello1
222
111
444
555
sed "s/1\(.*\)1/wo\1/g" test.txt
wohello
222
wo1
444
555

常用的項目文件替換

把當前項目中所有文件中的111替換成helloworld
sed -i "s/111/helloworld/g" `grep -rl . *`
發佈了32 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章