Aqui está um script Bash que deve fazer o que você quer:
#!/bin/bash
# match.sh
file1="$1"
file2="$2"
while read line; do
column="$(echo "${line}" | cut -d, -f1)"
if grep -Pq "^${column}," "${file2}"; then
echo "${line}"
fi
done < "${file1}"
Você executaria assim:
user@host:~$ bash match.sh file1 file2
a,txt1,v1
b,txt2,v2
user@host:~$ bash match.sh file2 file1
a,txt5,v2
b,txt6,v1
E aqui está um script Python que faz essencialmente a mesma coisa:
#!/usr/bin/env python
"""match.py"""
import sys
import csv
with open(sys.argv[1], 'r') as file1:
reader1 = csv.reader(file1)
for row1 in reader1:
with open(sys.argv[2], 'r') as file2:
reader2 = csv.reader(file2)
for row2 in reader2:
if row1[0] == row2[0]:
print(','.join(row1))
break