使用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行移到顶部的主要内容,如果未能解决你的问题,请参考以下文章
如何在像 snapchat 故事一样从底部滑动到顶部 android 时打开底部工作表片段
如何将 TextView 容器内的文本对齐到顶部? [复制]
将 select 和 input 元素中的文本垂直对齐到顶部