我有一个用例,我需要在其中搜索并替换文件中最后一次出现的字符串,并将更改写回文件。下面的案例是该用例的简化版本:
我正在尝试反转文件,进行一些更改以再次将其反转并写入文件。为此,我尝试了以下代码片段:
tac test | sed s/a/b/ | sed -i '1!G;h;$!d' test
测试是一个包含内容的文本文件:
a
1
2
3
4
5
我原以为这个命令不会改变文件的顺序,但它实际上将内容反转为:
5
4
3
2
1
b
如何进行替换并保持文件的顺序?
最佳答案
您可以tac
您的文件,在第一次出现所需模式时应用替换,再次tac
并将tee
结果保存到您之前的临时文件中用原来的名字重命名:
tac file | sed '0,/a/{s//b/}' | tac > tmp && mv tmp file
关于linux - 使用 tac 和 sed 反转文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45151642/