두 개의 파일이 있습니다.
파일 1:
a,txt1,v1
b,txt2,v2
c,txt3,v1
d,txt4,v2
파일 2:
a,txt5,v2
b,txt6,v1
xc,txt7,v1
xd,txt8,v2
문서를 완성하고 싶습니다. 첫 번째 열과 file1
일치하는 행만 필요합니다 file2
.
새 file1에는 다음이 포함되어야 합니다.
a,txt1,v1
b,txt2,v2
다시 말하지만, file2
첫 번째 열과 일치하는 행만 포함하도록 재정의해야 합니다 file1
. 따라서 file2는 다음과 같아야 합니다.
a,txt5,v2
b,txt6,v1
답변1
원하는 작업을 수행하는 Bash 스크립트는 다음과 같습니다.
#!/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}"
다음과 같이 실행할 수 있습니다.
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
기본적으로 동일한 작업을 수행하는 Python 스크립트는 다음과 같습니다.
#!/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