一 sed简介: 全名strem editor。一次处理一行内容,处理时把当前处理行存储在临时缓冲区,称为‘模式空间’,用sed命令处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,直到文件末尾。处理时文件内容没有改变,除非使用重定向存储输出。可以用sed -i直接改变文件内容
二 正则表达式: 基本正则表达式和扩展正则表达式。
2.1 基本正则表达式:
- 点号 " . ": 可匹配任何一个字符。 (1 在sed中不能匹配换行符 2 类似shell通配符中的 ? 号 )
- 星号 " * ": 表示前面字符有0个或多个。(1 .* 的使用 2 类似shell通配符中的"*")
- 中括号
- 行首符号
- 行尾符号
- 转义符号
- 大括号
2.2 扩展正则表达式: 用 sed -r 使用扩展正则表达式。
- 扩展正则表达式包括 问号? , 加号 + , 或符号 | , 小括号, 大括号
三 使用sed:
- 1 使用sed替换原文内容 sed -i: sed -i 's/text/replaceText/g' file
- 2 macOS上替换,必须加 ‘.bak: sed -i '.bak' 's/text/replaceText/g' file
- 3 替换带引号以及其他特殊字符文字:
- 3.1 含双引号: 匹配以及替换文字中的双引号应转义: sed -i '.bak' 's/test\"text\"/text\"test\"' file
- 3.2 含单引号:把sed 外层的单引号换成双引号,匹配字符串中的单引号无需转义:
- sed -i '.bak' "s/test'text'/text'test'" file
- 3.3 含斜杠和双引号:把斜杠转义: sed -i '.bak' 's/test\\"text\\"/text\\"test\\"' file
- 3.4 含变量$xxx: 把sed 外层的单引号换成双引号
- 4 替换指定行
- 5 在指定行前插入
- 6 在指定行后插入
- 7 在指定行后增加