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
。