首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在执行"sed -i“时出错会发生什么?--这是文件的适当更改。

问如果在执行"sed -i“时出错会发生什么?--这是文件的适当更改。
EN

Stack Overflow用户
提问于 2018-08-03 19:26:30
回答 1查看 144关注 0票数 0

我试图使用sed -i --查找和替换文件中的几个字符串。在执行sed命令时出现了什么错误,原始文件是否已损坏?还是它回滚回原来的文件?我知道如果我给sed -i"SUFFIX" --一个备份文件,它会在修改之前创建一个备份文件,但是它在成功执行备份文件时会删除它吗?还是我们需要手动完成?

我正在寻找一些东西在sed中进行更改,但是在出错或出现问题时,它需要回滚所有更改,直到发生为止,并将原始文件原样还给我。

我可以这样做,但寻找任何优化的解决方案:

代码语言:javascript
复制
sed 's/abc/def/g' file1 > tmp_file    
cp tmp_file file1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-03 19:39:31

您对带有扩展的-i如何在sed中工作有了错误的理解。它的唯一目的是在需要恢复时创建文件的备份。你的要求是完美的!

如果您的原始命令在调用时出现语法错误,则不会生成备份文件。见以下内容

代码语言:javascript
复制
$ echo 'foo' > file
$ ls
file 
$ cat file
foo
$ sed -i.bak 's/foo/bar/s' file
sed: -e expression #1, char 11: unknown option to `s'
$ cat file
foo
$ ls 
file

如您所见,即使在强制命令失败的情况下,也不会创建备份文件。

代码语言:javascript
复制
$ sed -i.bak 's/foo/bar/g' file
$ cat file
bar
$ ls
file file.bak
$ cat file.bak
foo

但是请稍等,您用bar错误地替换了,但是您想用foobar替换,现在将文件还原回

代码语言:javascript
复制
$ mv file.bak file
$ ls
file
$ cat file
foo
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51678976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档