Unix 为什么';不能识别\字符吗?
我想使用sed删除文件中的许多\项。这是我的命令: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 -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'吗?