[英]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.