本文索引:spa
擴展的元字符:+ ? | () {n,m};除這些外的其餘字符就不須要進行轉義了!code
[]的通常用法是做爲範圍選擇,例如索引
[root@castiel-Lu ~]# cat test a1234 b12345 a2341a A123 A4521a # []內的字符多選一,這裏用於忽略大小寫 [root@castiel-Lu ~]# sed -n '/^[aA].*$/p' 2.txt a1234 a2341a A123 A4521a
可是當[]字符實際有意義時,就須要進行轉義字符串
# 舉個例子 []是內容的一部分,至關於字符 [root@castiel-Lu ~]# cat test ert fff ** [abcfd] 123 324 444 [rty] ** fgfg # 如何匹配[abcfd]行到[rty]行之間的內容 [root@castiel-Lu ~]# sed -n '/\[abcfd\]/,/\[rty\]/'p test [abcfd] 123 324 444 [rty]
咱們能夠使用sed來實現tr命令轉換大小寫的效果ast
例如test
[root@castiel-Lu ~]# cat 1.txt aBcDeFgHiJkLmn
[root@castiel-Lu ~]# sed 's/\b[a-z]/\u&/g' 1.txt ABcDeFgHiJkLmn
[root@castiel-Lu ~]# sed 's/[a-z]/\u&/g' 1.txt ABCDEFGHIJKLMN
[root@castiel-Lu ~]# sed 's/[A-Z]/\l&/g' 1.txt abcdefghijklmn
[root@castiel-Lu ~]# cat 2.txt a1234 b12345 a2341a A123 A4521a
# 在a開頭的行後追加「_test」 [root@castiel-Lu ~]# sed -r 's/(^a.*$)/\1_test/' 2.txt a1234_test b12345 a2341a_test A123 A4521a
思路:先肯定範圍,在搜索特定字符創,最後打印便可擴展
# 以此爲例 [root@castiel-Lu ~]# cat 2.txt a1234_test b12345 a2341a_test A123 A4521a # 打印1-3行內包含字符串123的行 [root@castiel-Lu ~]# sed -n '1,3{/123/p}' 2.txt a1234 b12345
這裏涉及到了sed的模式空間概念sed
[root@test200 ~]# cat test a b c d e f [root@test200 ~]# sed '/c/{p;:a;N;$!ba;d}' test a b c
說明:定義一個標籤a
,匹配c
,而後N
把下一行加到模式空間裏,匹配最後一行時,才退出標籤循環,而後命令d
,把這個模式空間裏的內容所有清除。搜索
if 匹配"c" :a 追加下一行 if 不匹配"$" goto a 最後退出循環,d命令刪除。循環