【发布时间】:2011-10-13 21:57:01
【问题描述】:
我有一个巨大的文本文件。我想提取它的前 532541 行并将它们存储在另一个文件中。用鼠标选择文本并按 ctrl+c 显然不是一个可行的解决方案。
我应该怎么做?
【问题讨论】:
我有一个巨大的文本文件。我想提取它的前 532541 行并将它们存储在另一个文件中。用鼠标选择文本并按 ctrl+c 显然不是一个可行的解决方案。
我应该怎么做?
【问题讨论】:
head -n 532541 big-file > first-bit
【讨论】:
在 Emacs 中 M-C-SPCC-u532541C-nM-x写入区域。如果您经常这样做,请编写一个键盘宏来执行这些步骤。
或者,您可以定义一个插入当前缓冲区文件名的函数,例如so。然后,M-!head -n 531541 F3> first-bit
【讨论】:
head 是完成这项工作的正确工具。使用 awk 或 sed,在目标行之后退出处理文件效率更高,因此不必读取文件其余无用的部分。
sed '532541q' big > small
awk '{print} NR==532541 {exit}' big > small
【讨论】:
awk 'NR<=532541' big > small
awk '{if(NR<=532541) print; else exit}' big > small #if the file is really huge
sed -n '1,532541p' big > small
sed '1,532541!d' big > small
sed '532542,$d' big > small
:) 玩得开心
【讨论】: