두 파일 간의 컬럼 값을 비교하고 일치하면 다른 컬럼 값을 인쇄합니다.

두 파일 간의 컬럼 값을 비교하고 일치하면 다른 컬럼 값을 인쇄합니다.

,File1 에는 필드 구분 기호인 다음 데이터가 있습니다 .

1,T_EXIT,9053.0,10325.0,, ,  
2,V_TURN,120.0,11334.0,, , 
3,Q_ENTRY,122.0,190.0,, , 
4,Q_ENTRY_RUN,130.0,569.0,, ,

파일 2에 데이터가 있음

VDS SYNC
Dig T_EXIT OPEN
Ana Q_ENTRY CLOSE
Dig CORE_T 

비교하고 싶어요파일 2의 열 2그리고파일 1의 열 2EXCAT MATCH가 존재하는 경우 file2의 file1의 열 6과 열 7의 열 3을 복사하고 싶습니다.

나는 출력을 다음과 같이 원한다:

1,T_EXIT,9053.0,10325.0,,OPEN,OPEN 
2,V_TURN,120.0,11334.0,, , 
3,Q_ENTRY,122.0,190.0,,CLOSE,CLOSE
4,Q_ENTRY_RUN,130.0,569.0,, ,

아래 코드를 시도했지만 원하는 출력을 얻을 수 없습니다. 어떤 수정이 필요합니까?

awk 'NR==FNR{A[$2]=$3;next}$2 in A{$6=A[$2]}1' file2 file1 > test

답변1

실제로 누락된 것은 파일 간의 입력 및 출력 필드 구분 기호가 변경된 것뿐입니다.

$ awk 'NR==FNR{A[$2]=$3;next} $2 in A{$7=$6=A[$2]}1' file2 FS=, OFS=, file1
1,T_EXIT,9053.0,10325.0,,OPEN,OPEN
2,V_TURN,120.0,11334.0,, , 
3,Q_ENTRY,122.0,190.0,,CLOSE,CLOSE
4,Q_ENTRY_RUN,130.0,569.0,, ,

답변2

awk는 잘못된 도구인 것 같습니다. 이것은 또한 숙제 질문처럼 들립니다. 나는 다음을 사용할 것이다:

tr ' ' ',' <File2 >File3
join -t ',' -1 2 -2 2 File1 File3

관련 정보