使用Bash将文本文件的最后n行移到顶部

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Bash将文本文件的最后n行移到顶部相关的知识,希望对你有一定的参考价值。

如何在不知道文件行数的情况下将文本文件的最后n行移到顶部?是否可以使用单个命令行(例如sed)实现此目的?

从:

...
a
b
c
d

至:

a
b
c
d
...
答案

显示最后n行,然后显示其余行:

tail -n 4 file; head -n -4 file

来自man head

-n,--lines = [ - ] NUM

打印前NUM行而不是前10行;使用前导' - ',打印除每个文件的最后NUM行之外的所有行

tail -n 4将显示文件的最后4行。

如果您希望管道这些数据,您需要将它们放在一起,如下所示:

( tail -n 4 file; head -n -4 file ) | wc

或者也许您可以使用vim编辑内联文件:

vim +'$-3,$m0' +'wq' file

vim的+选项将在其后运行(Ex)命令。 $-3,$m0表示在最后一行上方的3行和最后一行之间移动行到文件的开头。请注意,+和命令之间不应有空格。


或者在vim普通模式下使用命令:

vim +'norm G3kdGggPZZ' file

G去档案结束; 3k上升3线; dG删除文件结束; gg进入文件顶部; P在此行之前粘贴已删除的行; ZZ保存并退出。

另一答案

这可能适合你(GNU sed):

sed '$!H;1h;$!d;G' file

将每行但最后一行附加到hold space,然后将保留空间附加到最后一行。

以上是关于使用Bash将文本文件的最后n行移到顶部的主要内容,如果未能解决你的问题,请参考以下文章

如何将html中的文本对齐到顶部?

如何在像 snapchat 故事一样从底部滑动到顶部 android 时打开底部工作表片段

如何将 TextView 容器内的文本对齐到顶部? [复制]

将 select 和 input 元素中的文本垂直对齐到顶部

Bootstrap 将图标对齐到左侧,将文本对齐到顶部栏的中心

如何将最近编辑过的单元格的行移到底部?