Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个非常大(500mb)的 csv 文件和另一个每行包含一个单词的文本文件。
当我在特定列中的 csv 文本文件中找到一个单词时,我想输出该行(将输出重定向到文件)。我有一个使用 grep -iE "(word1|word2|word3|...|wordn)" 的 grep 解决方案,但是在使用 16gb 内存和段错误后它崩溃了,并且只提取了很少的条目。
我试过 csvtool 但它拒绝产生任何有价值的东西。
该解决方案必须在 linux 下工作,并且最好不要限制内存。
使用awk. 首先处理每行一个单词的文件,将其数据保存在一个数组中,然后对于第二个文件,使用表达式if (column in array)检查特定列:
awk
awk ' BEGIN { FS = OFS = ","; } FNR == NR { data[ $1 ] = 1; next; } FNR < NR { if ( $4 in data ) { print $0; } } ' textfile large_csv_file