Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
Awk 将模式限制为指定的字符串_Awk - Fatal编程技术网

Awk 将模式限制为指定的字符串

Awk 将模式限制为指定的字符串,awk,Awk,我有一套弦。比方说,(list.txt)它们是: 1abc_A 2pqr_X 4ghi_Z 我还有一个文本文件(test.txt),如下所示: 1abc_A 2pqr_X 0.55 0.87 2pqr_X 3def_Y 0.21 0.24 4ghi_Z 1abc_A 0.98 0.75 2pqr_X 4ghi_Z 0.99 0.76 2pqr_X 2pqr_X 1.00

我有一套弦。比方说,(list.txt)它们是:

 1abc_A
 2pqr_X
 4ghi_Z
我还有一个文本文件(test.txt),如下所示:

1abc_A    2pqr_X    0.55       0.87
2pqr_X    3def_Y    0.21       0.24
4ghi_Z    1abc_A    0.98       0.75
2pqr_X    4ghi_Z    0.99       0.76
2pqr_X    2pqr_X    1.00       1.00
我只需要从test.txt中获取那些行,这样第1列和第2列中的字符串就属于list.txt中包含的字符串

在这种情况下,我的输出如下:

1abc_A    2pqr_X    0.55       0.87
4ghi_Z    1abc_A    0.98       0.75
2pqr_X    4ghi_Z    0.99       0.76
2pqr_X    2pqr_X    1.00       1.00
i、 e test.txt中除第2行以外的所有行,因为第2行中的第2列3def_Y不在list.txt中指定的字符串列表中

我在awk里怎么做? 请注意test.txt是一个很大的文本文件,几乎有7GB

解决这个问题最快的方法是什么? 请帮忙

awk 'NR==FNR{a[$0];next} ($1 in a) && ($2 in a)' list.txt test.txt
将list.txt的内容存储为数组的索引,然后test.txt逐行检查其第一个和第二个字段是否都是该数组的索引。将适用于任何大小的test.txt,因为它不会在内存中存储任何test.txt

将list.txt的内容存储为数组的索引,然后test.txt逐行检查其第一个和第二个字段是否都是该数组的索引。将适用于任何大小的test.txt,因为它不会在内存中存储任何test.txt