我在Mac上使用Sed。我试图在不在目录中的文件上执行简单的字符串替换。我这样做:
sed -i 's/old/new/' /Users/A/file
它表示无效的命令代码A.
我需要做什么?
答案 0 :(得分:1)
OSX / BSD -i
中的sed
选项与GNU / Linux版本略有不同,因为它需要提供备份扩展,即使它& #39;是一个空字符串(这意味着不会进行备份)。 "无效的命令代码"出现错误消息,因为s/old/new
被视为备份扩展,/Users/A/file
被视为脚本(其中A
被视为无效的命令名称)。所以它需要像:
sed -i '' 's/old/new/' /Users/A/file
答案 1 :(得分:0)
如果你有perl:
perl -p -i -e 's/old/new/' /Users/A/file
sed中的-i
不是操作系统的标准(不是POSIX标准)。这应该每次都有效:
cp /Users/A/file /Users/A/file.sed
cat /Users/A/file.sed | sed 's/old/new' > /Users/A/file