如何在文件的倒数第三行中替换最后一次出现的模式

0 sed text-processing

我有一个文件,我想在其中替换文件中第三行到最后一行中最后一次出现的字符串。我有一个文件,如:

  analyze_compression_testpoints -log no -TESTMODE FULLSCAN
  -EXPERIMENT <br /> azul_rrfa -outputfile
  ./testresults/testinsertion.file<br />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我要替换<br /></font>只在倒数第三行。我在用:

sed -i "s|\(.*\)<br />\$|\1</font>|g"
Run Code Online (Sandbox Code Playgroud)

但它正在替换每一行中的所有最后一次出现,但我只想要最后一次出现的文件,而不是每一行。

Sat*_*ura 8

sed

tac file | sed '3 s|<br />$|</font>|' | tac
Run Code Online (Sandbox Code Playgroud)

ed

echo -e '$-2s/<br \/>$/<\/font>/\nw' | ed -s file
Run Code Online (Sandbox Code Playgroud)

vim

:$-2 s!<br />$!</font>!
Run Code Online (Sandbox Code Playgroud)