用grep最快的方法在Linux的文件中另外一百万条记录中列出1000条记录 - python

在Linux中,在文件的另100万条记录中grep 1000条记录列表的最快方法是什么。

假设这些是我的示例记录:

1,,EE1,1000,WAT,EEE,20160222T02:00:15+0400,20181231T23:59:59+0400,,vEEE,,47126469f184fee9a80664d952d7fea7,50278774602,95223904,140495221530736,21001,,,,,,,,,,,,,,,C
0,,EE1,1000,WAT,EEE,20160222T02:00:15+0400,20181231T23:59:59+0400,20160222T02:00:15+0400,,vEEE,47126469f184fee9a80664d952d7fea7,50278774602,,,21001,,,,,,,,,,,,,,,H
1,,EE1,1000,WAT,EEE,20160222T02:00:15+0400,20181231T23:59:59+0400,20160521T11:07:25+0400,,vEEE,47126469f184fee9a80664d952d7fea7,50278774602,0095223904,140495221530736,21001,,,,,,,,,,,,,,,H

如果我grep 50278774602,则这些值将出现在三行中。我已经在同一脚本上使用for循环开发了一个脚本。我在文件中有此类数字的列表,并且正在大文件(数百万行)中搜索值,并且我只需要最后一次出现包含我的grep模式的此类行。它与for循环完美配合,但我担心的是,这需要花费大量时间。

我的剧本:

for i in `cat /home/admin/pnd_tmp`; do
    grep $i /test/done/TEST_RT* | tail -1 > /home/admin/pnd_fin |
    awk -F "," '{if ( $1 == "4" ) print $13 }' > /home/admin/pnd_tmp_fin
done 

谁能建议一个更好的方法来做到这一点?

参考方案

如果您有tac和grep(GNU),则可以使用

tac /test/done/TEST_RT* | grep -m 1 $i

在您的for循环中。这比查找所有匹配项并仅选择最后一个匹配项要快得多。

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Shell脚本如何从自身内部执行另一个Shell脚本 - python

我的问题是,shell脚本如何执行在新进程中生成的另一个shell脚本?还是在与调用它的脚本相同的过程中执行?一个示例是一个Python脚本,该脚本在满足条件后从Shell脚本执行,还有人如何编写此Shell脚本,使其生成Python脚本,然后退出自身而不会杀死Python脚本 python大神给出的解决方案 是的,如果您在外壳程序中调用外壳程序脚本,外壳程…

在当前目录下编写一个脚本,生成多个目录,创建空文件,然后列出所有文件。 - python

Closed. This question needs details or clarity。它当前不接受答案。                                                                                                                            …

如何在Python中使用文本文件作为输入? - python

这似乎是一个简单的问题,但这是我第一次接触Python,所以请多多包涵。我创建了一个简单的bash脚本来进行一些SMTP枚举,并一直试图将其转换为Python脚本。 bash脚本是:到目前为止,我拥有的Python脚本是这样的:但是现在,我必须分别输入每个用户名一次,脚本关闭。我已经创建了一个简单的文本文件,其中包含许多可能的用户名,并且希望能够使用该文件中…

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…