Bash 正在还原特定行的backup.txt

Bash 正在还原特定行的backup.txt,bash,shell,sed,Bash,Shell,Sed,我有backup.txt five six seven five six seven seven six five five more here What about FIVE fIve fivefive fivefivefive fIveFivefiVe? five more here What about FIVE fIve fivefive fivefivefive fIveFivefiVe? 我也喜欢new.txt four six seven four six seven seve

我有
backup.txt

five six seven
five six seven seven six five
five more here
What about FIVE fIve fivefive fivefivefive fIveFivefiVe?
five more here
What about FIVE fIve fivefive fivefivefive fIveFivefiVe?
我也喜欢new.txt

four six seven
four six seven seven six four
four more here
What about four four fourfour fourfourfour fourfourfour?
我想将新文本的第3行和第4行还原为
backup.txt中的内容

five six seven
five six seven seven six five
five more here
What about FIVE fIve fivefive fivefivefive fIveFivefiVe?
five more here
What about FIVE fIve fivefive fivefivefive fIveFivefiVe?
如何使用
sed

所以new.txt看起来像

four six seven
four six seven seven six four
five more here
What about FIVE fIve fivefive fivefivefive fIveFivefiVe?
在你的特殊情况下

sed -n '1p;2p;7p;7p' new.txt backupt.txt 
将按预期工作。

在您的特定情况下

sed -n '1p;2p;7p;7p' new.txt backupt.txt 

将按预期工作。

我的第一反应是“你不能”。这取决于您的意思,但除非您有上一行4的记录(特别是),否则由于编辑版本的外观不区分大小写,您无法恢复原始版本的大小写敏感度。另外,我假设您的意思是,您已经完成了文件的完整传递,然后希望进行另一次传递以撤消它。您无法在编辑时有意义地还原内容
sed
没有撤消缓冲机制或类似的机制。它是一个非交互式编辑器;没有必要建立这样的机制。嗨,乔纳森,我想我的问题不是很清楚,我很抱歉。我有new.txt,它是我使用sed处理的新文本,我有backup.txt,它是原始文本。有没有办法把我的新文本的第3行和第4行改成backup.txt的格式?哦。这算吗<代码>sed-n'1,2p;7,8p'new.txt backup.txt
?默认情况下不打印;打印前两行(从
new.txt
);打印最后两行(来自
backup.txt
)。它不是很灵活,但是也没有给出场景。或者,您可以仅将转换应用于前两行:
sed-e'1,2s/five/four/g'backup.txt
。是的,这很有效!谢谢有没有办法用-i将新的正确输出保存到new.txt?或者其他方法?对于第二个命令(重做编辑),重定向
…>new.txt
。首先,您不能覆盖
new.txt
;重定向到另一个文件,然后将新文件移到旧文件上:
…>alt.txt;mv alt.txt new.txt
。或
…>alt.txt;cp alt.txt new.txt;rm alt.txt
。如果有指向
new.txt
的硬链接,这将保留该链接,但
mv
会将其断开。如果(很可能)没有这样的链接,那么就使用
mv
。我的直接反应是“你不能”。这取决于您的意思,但除非您有上一行4的记录(特别是),否则由于编辑版本的外观不区分大小写,您无法恢复原始版本的大小写敏感度。另外,我假设您的意思是,您已经完成了文件的完整传递,然后希望进行另一次传递以撤消它。您无法在编辑时有意义地还原内容
sed
没有撤消缓冲机制或类似的机制。它是一个非交互式编辑器;没有必要建立这样的机制。嗨,乔纳森,我想我的问题不是很清楚,我很抱歉。我有new.txt,它是我使用sed处理的新文本,我有backup.txt,它是原始文本。有没有办法把我的新文本的第3行和第4行改成backup.txt的格式?哦。这算吗<代码>sed-n'1,2p;7,8p'new.txt backup.txt?默认情况下不打印;打印前两行(从
new.txt
);打印最后两行(来自
backup.txt
)。它不是很灵活,但是也没有给出场景。或者,您可以仅将转换应用于前两行:
sed-e'1,2s/five/four/g'backup.txt
。是的,这很有效!谢谢有没有办法用-i将新的正确输出保存到new.txt?或者其他方法?对于第二个命令(重做编辑),重定向
…>new.txt
。首先,您不能覆盖
new.txt
;重定向到另一个文件,然后将新文件移到旧文件上:
…>alt.txt;mv alt.txt new.txt
。或
…>alt.txt;cp alt.txt new.txt;rm alt.txt
。如果有指向
new.txt
的硬链接,这将保留该链接,但
mv
会将其断开。如果很可能没有这样的链接,那么就使用
mv