我正在 MacBook Air 中通过 iterm2 访问远程 HPC。有时上面的命令工作得很好,但有时会出现错误。任何人都可以帮我找出我的错误吗?我遵循以下格式:
sed -i 's/search_string/replace_string/' filename
sed -i 's/ashu/vishu/' test.txt
答案1
-i
macOS 上的非标准选项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
对临时命名文件应用操作,将输出重定向到原始文件。然后删除临时名称。
正如我上面所做的那样,在操作之间使用&&
可确保除非上一步已成功完成,否则不会执行任何一步。
也可以看看: