shell 替换字符串 ,这个代码怎么改能在mac下正确执行?sed -i "s/${old_arr[$i]}/${new_arr[$i]}/g" "$file"
时间: 2024-02-22 07:56:02 浏览: 11
在 macOS 上,`sed` 命令的参数有一些不同,所以需要稍作修改。可以使用如下命令替换字符串:
```bash
sed -i '' "s|${old_arr[$i]}|${new_arr[$i]}|g" "$file"
```
需要注意的是,在 macOS 上,`sed` 命令的 `-i` 选项必须后面跟一个备份文件的后缀名,这里使用空字符串代表不备份原始文件。
另外,为了避免一些特殊字符造成的问题,这里使用了 `|` 作为分隔符,也可以使用其他字符,只要不和原始字符串或替换字符串中的字符冲突即可。
相关问题
sed -i "s/${old_string}/${new_string}/g" ${file_path}什么意思
这是一个用于替换文件中字符串的命令,其中:
- `sed` 是一个命令行工具,用于对文本进行流编辑,`-i` 参数表示直接修改文件内容,而不是输出到屏幕上。
- `"s/${old_string}/${new_string}/g"` 是一个替换命令,其中`s`表示替换命令的类型为替换字符串,`${old_string}`表示待替换的字符串,`${new_string}`表示替换后的字符串,`g`表示全局替换,即每行中所有匹配的字符串都会被替换。
- `${file_path}` 表示要替换的文件路径。
sudo sed -i s/$/.0\/24/g /var/www/html/dcos-iptables/sub-net
您好!对于您的问题,`sudo sed -i s/$/.0\/24/g /var/www/html/dcos-iptables/sub-net` 是一个使用 sed 命令在 `/var/www/html/dcos-iptables/sub-net` 文件中对每行的末尾进行替换操作。
具体来说,`sudo` 是以超级用户权限运行命令,`sed` 是一个用于文本处理的工具,`-i` 参数表示直接在文件中进行修改,`s/old/new/g` 表示替换操作,`$` 表示每行的末尾,`.0\/24` 是要替换的内容,最后是要修改的文件路径 `/var/www/html/dcos-iptables/sub-net`。
这个命令的作用是将每行的末尾替换为 `.0/24`,并将结果保存到 `/var/www/html/dcos-iptables/sub-net` 文件中。例如,如果原始文件中有一行为 `10.127.128.0`,经过这个命令处理后,该行将变为 `10.127.128.0/24`。