我有两个文件:
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 代码,你可能需要考虑将行分割一次并多次使用该列表,而不是每次需要它的一部分时重新分割它