繁体   English   中英

使用SED获取巨大文本文件的最后n行

[英]Using SED to Get the Last n Lines of a Huge Text File

如何使用“sed”命令获取大文本文件的最后n行(例如A.txt)并将它们复制到新的文本文件(例如B.txt)? 我不想从A.txt中删除那些行。

你没有。 你使用tail -n NUMLINES

tail -n 100 A.txt > B.txt

以下是使用sed打印文件的最后10行的方法:

sed -e :a -e '$q;N;11,$D;ba' 

如果你计划在这些行上执行更多的sed命令,你应该只使用它。 否则tail命令是为此作业设计的。

使用GNU sed,这里是如何获取最后10行:

(对于n行,替换11,用n + 1)

sed -ne':a;$p;N;11,$D;ba' A.txt > B.txt

注意 :在我的Mac上,使用MacPorts,GNU sed被调用为gsed 要使用Apple的sed你必须将标签分开: sed -ne':a' -e'$p;N;11,$D;ba' *

说明:

sed -ne'调用没有自动打印模式空间的sed

:a循环标签

$p在最后一行,打印模式空间,然后退出

N啜饮下一行

11,$D第11行到最后一行的11,$D ,从模式空间中删除第一行(即[^ \\ n] * \\ n)

ba'循环到:a

进一步

由于循环, sed不断地将下一行附加到模式空间。 在第11行和最后一行( 11,$D )之后, sed开始从模式空间中删除第一行。 在最后一行打印模式空间(`$ p'),其中包含最近10条最近的slurped行(文件A.txt的最后10行)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM