sed -i 's/www.google.com/www.baidu.com/g' 文件全路径名
上面这个指令相当于把文件中所有的www.google.com 替换为www.baidu.com
选项 | 说明 | 备注 |
---|---|---|
-e | 进行多项(多次)编辑 | 可以编辑多个匹配参数 |
-n | 取消默认输出 | 不自动打印模式空间 |
-r | 使用扩展正则表达式 | |
-i | 原地编辑 | 会修改源文件 |
-f | 指定sed脚本的文件名 |
语法:sed 选项 ‘s/搜索的内容/替换的内容/动作’ 需要处理的文件
其中,s表示search搜索;斜杠==/ 表示分隔符,可以自己定义;动作一般是打印p和全局替换g==(默认只替换每行第一个匹配到的内容)
另外如果有中文 ,可能不同系统版本对不上,也要注意一下
如果文件全路径名中有空格 如/opt/good file.txt,这时就会出错,需要用“”来标记一下
sed -i 's/www.google.com/www.baidu.com/g' "/opt/good file.txt"
如果我们相把一个文件夹下所有的文件都进行这样的替换
grep www.google.com -rl 目录名 |xargs sed -i "s/www.google.com/www.baidu.com/g"
但这个目录下如果有空格的文件就会出错于是改为
grep www.google.com -rl 目录名 |tr '\n' '\0'| xargs -0 sed -i "s/www.google.com/www.baidu.com/g"
解决思路就是,把每行的'\n'转换为'\0',再使用xargs的 -0选项
另外一种写法
sed -i "s/www.google.com/www.baidu.com/g" `grep www.google.com -rl 目录名 |tr '\n' '\0'`
注意 ` 不是单引号 注意 ` 不是单引号 注意 ` 不是单引号