SED - 寻址文件末尾之前的 N 行

SED - 寻址文件末尾之前的 N 行

有没有一种简单的方法可以在sed文件末尾之前的 N 行处寻址文件?

例如,当尝试插入文件内容时,我可以轻松插入以 结尾sed -i '$ r file2.txt' file1.txt,甚至在以 结尾之前sed -i -e '$ e cat file2.txt' file1.txt,但似乎找不到解决某些 N 行的方法文件末尾。就像$-55 是数轴一样。我知道可能有一些head和的组合tail可以使用,但我正在寻找一种纯粹的sed方法。

答案1

您可能想要反转该文件,请采取第一的N行,然后反转该行的输出

$ seq 100 > file
$ tac file | sed -n 5,10p | tac
91
92
93
94
95
96

答案2

与其他答案类似,我不知道如何用 sed 在一行中执行此操作,除非携带大缓冲区,但使用两行可以更轻松地实现:

NUM_LINES=$((`sed -n $= file1.txt`-20))   # or however many lines you want instead of 20
sed -i "$NUM_LINES r file2.txt" file1.txt

可以说,您似乎想在一行中完成此操作,并且可能可以使用很多N;N;s 来完成,但这可能不太实用。

相关内容