다른 파일의 값을 기반으로 한 파일의 열을 다시 채웁니다.

다른 파일의 값을 기반으로 한 파일의 열을 다시 채웁니다.

두 개의 파일이 있습니다.

파일 1.csv:

fruit_count|fruit_id
10|1234-5
20|1560-0
40|4500-0
100|6700-0 
120|6770-8
110|5555-1 
80|6666-9
15|7777-4
13|3333-2 

파일 2.csv:

fruit_id|fruit_name|n1|n2|
1234-5|strawbery||sweet|
4500-0|apple||sweet|
1560-0|orange||sweet|
6770-8|grape||sweet|
6666-9|peach||sweet|
7777-4|kiwi||sweet|
3333-6|blueberry||sweet|
9999-2|banana||sweet|
6666-3|grapefruit||sweet|

원하는 출력:

파일 3.csv

fruit_id|fruit_name|n1|n2|
1234-5|strawbery|10|sweet|
4500-0|apple|40|sweet|
1560-0|orange|20|sweet|
6770-8|grape|120|sweet|
6666-9|peach|80|sweet|
7777-4|kiwi|15|sweet|
3333-6|blueberry||sweet|
9999-2|banana||sweet|
6666-3|grapefruit||sweet|

따라서 두 파일 모두에 Fruit_id가 존재하고 일치하는 경우 file1.csv의 Fruit_count 열 값을 사용하여 file2.csv의 n1 열을 가져오려고 합니다. 일치하는 값이 없으면 file3.csv의 필드는 비어 있어야 합니다.

내가 시도한 것:

awk -F "|" 'NR==FNR{r[$2]=$1;next} {$3=r[$1]} 1' file1.csv file2.csv > file3.csv

그리고:

awk -F"|" 'BEGIN{OFS="|"} 
           {
            if (NR==FNR) {
                r[$2]=$1; 
                next
            } 
            if ($1 in r){
                $3=r[$1]
            }
             print
           }' file1.csv file2.csv > file3.csv

관련 정보