,
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