sed
Fri, Jan 18, 2019
閱讀時間 1 分鐘
sed
sed [options] ‘[地址定界] command’ file(s) sed -e ‘1,8 s/ [Tt]he/ THE/ g’ MyFile.txt
-n:不輸出模式空間內容到螢幕,即不自動列印,只列印匹配到的行
-e:參數指定要執行的編輯指令
-f:把Script寫到檔案當中,在執行sed時-f 指定檔案路徑,如果是多個Script,換行寫
-r:支援擴充套件的正則表達式
-i:直接處理檔案
-i.bak:在將處理的結果寫入檔案之前備份一份
不給地址:對全文進行處理
單地址:
#: 指定的行
/pattern/:被此處模式所能夠匹配到的每一行
地址範圍:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
~:步進
sed -n '1~2p' 只列印奇數行 (1~2 從第1行,一次加2行)
sed -n '2~2p' 只列印偶數行
d:刪除模式空間匹配的行,並立即啓用下一輪回圈
p:列印當前模式空間內容,追加到預設輸出之後
a:在指定行後面追加文字,支援使用\n實現多行追加
i:在行前面插入文字,支援使用\n實現多行追加
c:替換行爲單行或多行文字,支援使用\n實現多行追加
w:儲存模式匹配的行至指定檔案
r:讀取指定檔案的文字至模式空間中匹配到的行後
=:爲模式空間中的行列印行號
!:模式空間中匹配行取反處理
s///:查詢替換,支援使用其它分隔符,如:s@@@,s###;
加g表示行內全域性替換;
在替換時,可以加一下命令,實現大小寫轉換
\l:把下個字元轉換成小寫。
\L:把replacement字母轉換成小寫,直到\U或\E出現。
\u:把下個字元轉換成大寫。
\U:把replacement字母轉換成大寫,直到\L或\E出現。
\E:停止以\L或\U開始的大小寫轉換
example
sed -e ’s/word1/word2/g’
# s/find/replace/g
# s: 5s 只處理第五行, 5,10s 五到十行
# g: 全部, 不打: 只換第一個, 2: 換第二個, gi: ignore case
sed -i -e 's/word1/word2/g' input.txt
# 將所有英文字轉為大寫
sed -i -e 's/.*/\U&/' input.txt
# 將所有英文字轉為小寫
sed -i -e 's/.*/\L&/' input.txt
find . -name '*.ts' -type f -exec sed -i 's/pattern\([s]\)/要換的字\1/g' '{}' \;