gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:00:42 25 4
gpt4 key购买 nike

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

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

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_RT* | grep -m 1 $i

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

关于python - 在 Linux 中 grep 列出文件中另一百万条记录中的 1000 条记录的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37451494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com