linux shell脚本 sed 替换指定文件夹下所有有空格文件路径下的内容,有坑

13 篇文章 0 订阅
4 篇文章 0 订阅
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'`

注意 ` 不是单引号 注意 ` 不是单引号   注意 ` 不是单引号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值