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

sed -i 's/www.google.com/www.baidu.com/g' 文件全路径名

上面这个指令相当于把文件中所有的www.google.com 替换为www.baidu.com

如果文件全路径名中有空格 如/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'`

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

猜你喜欢

转载自blog.csdn.net/babytiger/article/details/107786473