ファイルの単一列を他のファイルと比較する

ファイルの単一列を他のファイルと比較する

2つのファイルがあります。

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
....

最初のファイルの最初の列を2番目のファイルと比較し、その要素が2番目のファイルにある場合は、最初のファイルの各行を別々のファイルに書き込む必要があります。 Pythonでこれを行うスクリプトがありますが、非常に非効率的です。端末でこれを行うことはできますか?

編集する:

pythonスクリプト:LABEL_FILEは最初の例です。他の「ファイル」リストはフォルダ内のファイルの現在のイメージのリストです。

 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

しかし、dos2unix最後に文字があるので、まずfile2が必要です。\r

これにより、単語全体が一致し、-wファイルからパターンが読み取られます-f。これは実際には行のどの位置でもパターンと一致しますが、提供した入力例に基づいて作業を行う必要があります。

Pythonコードの場合は、一部が必要なときはいつでも再分割するのではなく、行を1回分割してリストを複数回使用することを検討できます。

関連情報