我在 Mac 和 Ubuntu 中工作,所以我想让我的脚本在 Mac 和 Ubuntu 中工作,但sed -i在这两个系统中的工作方式不同:
在 Ubuntu 中,它应该是:
sed -i'' 's/Alt/Dog/g' /tmp/example.txt
Run Code Online (Sandbox Code Playgroud)
在 Mac 中,它应该是:
sed -i '' 's/Alt/Dog/g' /tmp/example.txt
Run Code Online (Sandbox Code Playgroud)
要使相同的-i符号同时适用于 GNU sed(Ubuntu、Linux)和 BSD sed(Mac OS X),您必须:
-i选项。因此:
sed -i.bak 's/Alt/Dog/g' /tmp/example.txt
Run Code Online (Sandbox Code Playgroud)
将与 的两种变体一起正常工作sed,创建备份文件/tmp/example.txt.bak并/tmp/example.txt使用修改后的输出覆盖原始文件。(注意具有多个链接或符号链接的文件。)
您不能在同一命令行中使用空后缀(无备份)。在 GNU 上,空字符串附加到-i选项(概念上 - 正如您在问题中所示);在 BSD 上,空字符串必须是一个单独的参数。永远不会相遇。
| 归档时间: |
|
| 查看次数: |
952 次 |
| 最近记录: |