将文件的单列与另一个文件进行比较

将文件的单列与另一个文件进行比较

我有两个文件:

aaaa 11 0.4 12 0.2
aaab 40 0.1 99 0.2 69 0.3
aaac 222 0.5 21 0.3
aaad 2 0.1
aaae 33 0.3
....

aaaa
aaac
aaae
....

我需要将第一个文件的第一列与第二个文件进行比较,如果第二个文件中存在元素,则将第一个文件的每一行写入单独的文件。我有一个脚本可以在 python 中执行此操作,但效率极低。可以从终端进行吗?

编辑:

python 脚本: LABEL_FILE 将是第一个示例,其他“文件”-列表是文件夹中文件的present_images列表。

 f = open(LABEL_FILE, 'r')
 present_images = iter(os.listdir(os.path.join(IMAGES_PATH, dataset)))

 templab = f.readlines()
 num_info = len(templab)
 image_ids = []
 labels = [] 
 labels_ind = [] 
 for line in templab:
     if len(line[:-1].split(' ')) != 1:
         if (line[:-1].split(' ')[0] in present_images):
             image_ids.append(os.path.join(IMAGES_PATH, dataset, line[:-1].split(' ')[0]))
             line = line[:-1].split(' ')[1:]
             labels_ind.append([int(i) for i in line[::2]])
             labels.append([float(j) for j in line[1::2]])

答案1

对于这些文件,您可以使用 grep,如下所示:

grep -wf file2 file1

不过你需要先 file2 因为它末尾dos2unix有字符。\r

这将匹配整个单词并-w从文件中读取模式-f。这实际上会匹配行中任何位置的模式,但是根据您提供给我们的示例输入,它应该可以完成工作。

至于你的 python 代码,你可能需要考虑将行分割一次并多次使用该列表,而不是每次需要它的一部分时重新分割它

相关内容