파일 1:
Doe, John, phone123
Dane, Jane, phone124
파일 2
phone123, longdistance, 10mins
phone124, local, 5mins
phone124, longdistance, 6mins
산출
Doe, John phone123 longdistance 10mins
Dane, Jane phone124 local 5mins
Dane, Jane phone124 longdistance 6mins
지금까지 나는
join -1 1 -2 3 -o 2.1,2.2,1.1,1.2,1.3 file2.txt file1.txt > output.txt
파일 1과 2를 "" 없이 공백으로만 구분하면 작동하지만 파일에 쉼표를 넣으면 공백이 출력됩니다.
답변1
실제 문제는 2문자 필드 구분 기호입니다. 조인 및 정렬과 같은 도구에서는 구분 기호가 단 한 문자일 것으로 예상합니다.
join -t, -13 -21 -o 1.1,1.2,1.3,2.2,2.3 \
<(sed -E 's/, +/,/g' file1.txt | sort -t, -k3,3) \
<(sed -E 's/, +/,/g' file2.txt | sort -t, -k1,1)
산출
Doe,John,phone123,longdistance,10mins
Dane,Jane,phone124,local,5mins
Dane,Jane,phone124,longdistance,6mins
| sed 's/,/, /g'
"쉼표 공백" 구분 기호를 복원하기 위해 이를 파이프할 수 있습니다 .
번갈아,앗
awk '
BEGIN {FS = ", *"; OFS = ", "}
NR == FNR {name[$3] = $1 OFS $2; next}
$1 in name {print name[$1], $0}
' file1.txt file2.txt