Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 最快的白鹭是什么_Linux_Bash_Shell_Awk_Grep - Fatal编程技术网

Linux 最快的白鹭是什么

Linux 最快的白鹭是什么,linux,bash,shell,awk,grep,Linux,Bash,Shell,Awk,Grep,我需要从一个有200万行的大型csv文件中导出,我想将导出时间缩短到0.5秒,这有可能吗?不,我现在不需要数据库(sqlite3或MySQL) $ time wc foo.csv 2000000 22805420 334452932 foo.csv real 0m3.396s user 0m3.261s sys 0m0.115s 我已经能够将运行时间从40秒缩短到1.75秒 $ time egrep -i "storm|broadway|parkway center|chief financi

我需要从一个有200万行的大型csv文件中导出,我想将导出时间缩短到0.5秒,这有可能吗?不,我现在不需要数据库(sqlite3或MySQL)

$ time wc foo.csv
2000000 22805420 334452932 foo.csv
real 0m3.396s
user 0m3.261s
sys 0m0.115s
我已经能够将运行时间从40秒缩短到1.75秒

$ time egrep -i "storm|broadway|parkway center|chief financial" foo.csv|wc -l

108292

real    0m40.707s
user    0m40.137s
sys     0m0.309s

$ time LC_ALL=C egrep -i "storm|broadway|parkway center|chief financial" foo.csv|wc -l

108292

real    0m1.751s
user    0m1.590s
sys     0m0.140s

但是我希望egrep的实时性不到半秒,任何技巧都会得到极大的赞赏,文件会不断变化,因此我不能使用任何缓存机制…

如果您只是在搜索关键字,您可以使用
fgrep
(或
grep-F
)而不是
egrep

LC_ALL=C grep -F -i -e storm -e broadway -e "parkway center" -e "chief financial"
接下来要尝试的是分解出
-i
,这可能是现在的瓶颈。例如,如果您确定只有第一个字母可以大写,则可以执行以下操作:

LC_ALL=C grep -F \
   -e{S,s}torm -e{B,b}roadway -e{P,p}"arkway "{C,c}enter -e{C,c}"hief "{F,f}inancial

grep的运行速度可能比磁盘系统吐出数据的速度还要快。如果您想要更快的结果,那么就获得更快的磁盘。Marc,unix内核将缓存它,而不是磁盘问题在您的系统上运行多长时间?请添加
time wc foo.csv
“文件持续更改”。然后它不会被缓存。$time wc foo.csv 2000000 22805420 334452932 foo.csv real 0m3.396s用户0m3.261s sys 0m0.115srici,太棒了!我在3次尝试中将平均时间缩短到1秒,再缩短0.5秒@辛迪:酷。好吧,我有另一个想法,但我不知道这会有多大的不同。编辑的答案。rici:-我必须在那里rici:不管怎样,没有-i,保存0.1second@CindyTurlington:10%是10%:)如果您不希望该文件包含“paRKwaY ceNteR”,那么它可能是值得的。除此之外,我认为您唯一的选择是并行,但这很棘手,因为您无法事先知道在哪里拆分文件。