첫 번째 파일의 특정 열 값과 일치하는 두 번째 파일의 모든 행을 가져옵니다.

첫 번째 파일의 특정 열 값과 일치하는 두 번째 파일의 모든 행을 가져옵니다.

두 개의 파일이 있습니다.

첫 번째 파일:

ab34,ax,55,gt
ab46,56,thy,ix
ab34,tg,47,xy
at87,kl,89,th
ab46,ut,87,er

두 번째 파일:

x1,ab34,78,got
wq,at87,100,op
90,ab46,la,gf

예상되는 결과:

ab34,ax,55,gt,x1,ab34,78,got
ab46,56,thy,ix,90,ab46,la,gf
ab34,tg,47,xy,x1,ab34,78,got
at87,kl,89,th,wq,at87,100,op
ab46,ut,87,er,90,ab46,la,gf

첫 번째 파일의 첫 번째 열에 있는 값을 기반으로 두 번째 파일의 줄을 grep하고 싶습니다. 이상적인 출력은 두 번째 파일과 일치하는 행을 포함하는 첫 번째 파일을 인쇄하는 것입니다. 나는 간단한 유닉스 명령을 작성했지만 이것은 나에게 약간 까다롭고 분명히 루프 기능이 필요합니다.

답변1

UNIX 명령 아이디어처럼 보입니다. 먼저 정렬해야 합니다.

cat 1|sort > 1.sort
cat 2|sort -t, -k2  > 2.sort
join -t, -2 2 1.sort 2.sort

내가 방금 너한테 숙제를 내줬니?

답변2

나는 여러분이 실제로 원하는 것에 대해 많은 가정을 하고 있지만 이는 여러분이 원하는 예제 출력을 생성합니다. 그렇다면 문제에 대한 내 해석이 맞을 수도 있습니다.

awk 'NR==FNR{a[$2]=$0; next} {print $0,a[$1]}' FS=, OFS=, file2 file1

관련 정보