Unix 为什么';不能识别\字符吗?

Unix 为什么';不能识别\字符吗?,unix,sed,Unix,Sed,我想使用sed删除文件中的许多\项。这是我的命令: sed -i.bak 's/\\\//g' myFile 我得到以下错误: sed: 1: "i.bak": command i expects \ followed by text. 它不应该工作吗。我试过: sed -i.bak 's/\\//g' myFile 但我也犯了同样的错误 谢谢。当您在OS X上使用sed时,以及当您想使用-i标志更改文件的位置时,您需要指定保存该文件备份的扩展名 查看有关-i标志的man sed部分:

我想使用sed删除文件中的许多\项。这是我的命令:

sed -i.bak 's/\\\//g' myFile
我得到以下错误:

sed: 1: "i.bak": command i expects \ followed by text.
它不应该工作吗。我试过:

sed -i.bak 's/\\//g' myFile
但我也犯了同样的错误


谢谢。

当您在OS X上使用
sed
时,以及当您想使用
-i
标志更改文件的位置时,您需要指定保存该文件备份的扩展名

查看有关
-i
标志的
man sed
部分:

 -i extension
         Edit files in-place, saving backups with the specified extension.  If a zero-length extension is
         given, no backup will be saved.  It is not recommended to give a zero-length extension when in-
         place editing files, as you risk corruption or partial content in situations where disk space is
         exhausted, etc.
因此,正确的命令应该是:

sed -i "bak" "s/\\\//g" myFile
如果您不想创建备份文件,您可以这样写:

sed -i "" "s/\\\//g" myFile
如果要使脚本平台独立,可以检查
$OSTYPE
环境变量:

if [[ "$OSTYPE" == "darwin"* ]]; then
  sed -i "" "s/\\\//g" myFile
else
  sed -i "s/\\\//g" myFile
fi

这是因为osx不允许
-i.bak
。您需要指示
-i“bak”
。像这样的问题很多,现在找不到合适的问题。可能重复的问题可能是shell问题,您尝试过sed-i'.bak'吗?