SED 错误:-bash:sed -i s/ashu/vishu/ test.txt:没有这样的文件或目录

SED 错误:-bash:sed -i s/ashu/vishu/ test.txt:没有这样的文件或目录

我正在 MacBook Air 中通过 iterm2 访问远程 HPC。有时上面的命令工作得很好,但有时会出现错误。任何人都可以帮我找出我的错误吗?我遵循以下格式:

sed -i 's/search_string/replace_string/' filename

sed -i 's/ashu/vishu/' test.txt 

答案1

-imacOS 上的非标准选项sed采用强制参数,即用于创建备份文件的文件名后缀。

在 macOS 上,如果您想使用就地编辑备份文件,使用空备份后缀:

sed -i '' 's/ashu/vishu/' test.txt

但是,这会对 GNU 造成错误的结果sed,并且从您的问题中不清楚sed您最终使用哪种实现。

便携式的进行就地编辑,使用以下命令:

cp test.txt test.txt.tmp &&
sed 's/ashu/vishu/' <test.txt.tmp >test.txt &&
rm -f test.txt.tmp

即将原始文件复制到一个临时名称。然后sed对临时命名文件应用操作,将输出重定向到原始文件。然后删除临时名称。

正如我上面所做的那样,在操作之间使用&&可确保除非上一步已成功完成,否则不会执行任何一步。

也可以看看:

相关内容