shell 替换字符串 ,这个代码怎么改能在mac下正确执行?sed -i "s/${old_arr[$i]}/${new_arr[$i]}/g" "$file"
时间: 2024-02-22 15:56:02 浏览: 132
在 macOS 上,`sed` 命令的参数有一些不同,所以需要稍作修改。可以使用如下命令替换字符串:
```bash
sed -i '' "s|${old_arr[$i]}|${new_arr[$i]}|g" "$file"
```
需要注意的是,在 macOS 上,`sed` 命令的 `-i` 选项必须后面跟一个备份文件的后缀名,这里使用空字符串代表不备份原始文件。
另外,为了避免一些特殊字符造成的问题,这里使用了 `|` 作为分隔符,也可以使用其他字符,只要不和原始字符串或替换字符串中的字符冲突即可。
相关问题
shell 替换字符串 ,这个代码怎么改才对?sed -i "s/${old_arr[$i]}/${new_arr[$i]}/g" "$file"
这个代码本身是可以正常工作的,但是如果原始字符串或替换字符串中包含一些特殊字符(比如 `/`),那么这个代码就会出现问题。为了避免这种情况,可以使用不同的分隔符,比如 `#`,并且对字符串进行转义,比如使用 `sed -i "s#${old_arr[$i]}#${new_arr[$i]}#g" "$file"`。
此外,如果原始字符串或替换字符串中包含变量,也需要使用双引号来包含整个 sed 命令,比如 `sed -i "s#${old_arr[$i]}#${new_arr[$i]}#g" "$file"`。
阅读全文