2012-03-21 64 views

回答

-2

我无法想象还有什么是在这个任何优于tail

2

你可以使用dd

dd if=input.sql of=output.sql skip=1217060 bs=1 

应该工作。假设ascii编码,否则偏移量可能是错误的。

更新:对不起,我只是明白,你想拥有该文件的最后1217060字节。那么你必须自己计算偏移量。 du input.sql应该给你文件的大小。该金额减去1217060应该给你想要使用的skip偏移量。

+0

我想要最后的1217060行,而不是字节,该文件 – user121196 2012-03-21 20:35:03

+0

对不起,那么我建议尝试Gangadhar指出的解决方案。 – devsnd 2012-03-22 08:52:05

1

在执行此操作之前无法将输入文件拆分为多个文件吗?在某些情况下,即使拖尾也需要一段时间来处理文件。这link可能是你可以尝试的东西。

0

真的需要更多的背景知道为什么你这样做......但是可能你可以通过拖拽和追加文件的最后几行来改善它,就像它是一个日志并将新的东西附加到输出文件。

tail -f source.sql >> target.sql

你能给出更多的细节吗?你是否在使用cron与这个命令一起使用?你为什么要阅读然后转储这么多的数据?大多数数据库都有一个转储命令...

0

我刚刚遇到了同样的问题,当我想将大文件(6,666,206行)拆分为大小基本相同的10个块时(不包括第一行)。前9个文件,我用这样的结构:

head -n 670001 rather_big_file.csv | tail -n 670000 > chunk_1.csv 
head -n 1340001 rather_big_file.csv | tail -n 670000 > chunk_2.csv 
(...) 
head -n 6030001 rather_big_file.csv | tail -n 670000 > chunk_9.csv 

他们每个人都花了几秒钟时间来处理。但对于10日的文件,我想

tail -n 636205 > chunk_10.csv 

它没有回来;就像原始问题中所描述的一样。

但是,然后,我尝试了与前九个文件,即我相同的构造。 e:

head -n 6666206 rather_big_file.csv | tail -n 636205 > chunk_10.csv 

并在几秒钟后返回所需的文件。 我不知道为什么这个工作,但它解决了问题!