sed替换的基本语法为:
sed 's/<原待替换字符串>/<替换目标字符串>/'
在上一段代码规则中:单引号内部,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线
\
进行转义。但是单引号'
是不能用反斜线\
转义的,这中签情况需要把命令中的单引号改为双引号,即:sed "s/<原待替换字符串>/<替换目标字符串>/"
。
命令中的斜线分隔符可以换成其他的符号,只需要紧跟s定义即可,例如换成问号
?
:sed 's?<原待替换字符串>?<替换目标字符串>?'
,效果是一样的。
基本语法默认只替换每行的第一个匹配的关键字。
更复杂的语法可以在此基础上加以调整:
0.1. 替换全部匹配的关键字
基本语法 g
可以替换字符串中每一个匹配的关键字:
sed 's/<原待替换字符串>/<替换目标字符串>/g'
0.2. 指定替换范围(行数范围)
这里有几个特殊符号,可以用于选定命令指代的行数范围:
- 上箭头
^
: 表示行首; - 美元符号
$
: 如果在引号中表示行尾,但是在引号外却表示末行(最后一行); - 数字: 指定一个数字,数字就代表对应的范围行数。
0.2.1. 替换指定行数范围内容
sed '2s/<原待替换字符串>/<替换目标字符串>/g' //替换第2行 (全局替换)
sed '$s/<原待替换字符串>/<替换目标字符串>/g' //替换最后一行 (全局替换)
sed '2,5s/<原待替换字符串>/<替换目标字符串>/g' //替换2到5行 (全局替换)
sed '2,$s/<原待替换字符串>/<替换目标字符串>/g' //替换2到最后一行 (全局替换)
0.2.2. 在指定行首/尾添加内容
添加命令默认是添加在行首。如需添加到行位,要用 &
字符标记在添加内容之前。
sed 's/^/<待添加的目标字符串>&/g' //在所有行首添加
sed 's/$/&<待添加的目标字符串>/g' //在所有行末添加
0.3. 保存替换输出结果或编辑文件内字符
sed处理过的输出是直接输出到屏幕上的,如果需要保存可以将输出重定向,或者使用参数 i
直接在文件中替换:
sed -i 's/<原待替换字符串>/<替换目标字符串>/g' <需替换内容的文件名>
//替换文件中的所有匹配项