例如将test.txt
文件内的以1
开头的行,替换为"aa/bb"
使用命令
sed -i ".bak" "s/1.*/aa\/bb/" test.txt
其中:
-i ".bak"
是直接操作文件并添加.bak
作为备份文件名称,如果不需要备份文件,则使用-i ""
s/
代表’“substitue”,即替换1.*
代表以1
开头的所有字符串,.*
在正则表达式中表示所有字符aa\/bb
使用了转义字符表示aa/bb
。- 注意最后还需要一个分界符
/
,否则会提示unterminated substitute in regular expression
- 分界符也可使用
|
,那么特殊符号就不需要转义字符了,命令就变成:
sed -i ".bak" "s|1.*|aa/bb|" test.txt
- 如果需要在文件中替换多个相同的字符串,需要添加global参数
g
,即:
sed -i ".bak" "s/1.*/aa\/bb/g" test.txt
或者
sed -i ".bak" "s|1.*|aa/bb|g" test.txt
案例:
#cat test.txt
1@#$%^&*097qwert
2asdf
3jkl
#sed -i ".bak" "s/1.*/aa\/bb/" test.txt
#cat test.txt
aa/bb
2asdf
3jkl