File1에는 다음과 같은 데이터가 있으며 이는 필드 구분자입니다.
1,T_EXIT,9053.0,10325.0,, ,
2,V_TURN,120.0,11334.0,,GOAL,RECK
3,Q_ENTRY,122.0,190.0,, ,
4,Q_ENTRY_RUN,130.0,569.0,, ,
파일 2에 데이터가 있음
SYNC CLK
T_EXIT OPEN
Q_ENTRY CLOSE ALLOW
CORE_T MODE
file2의 Column1을 File1의 Column2와 비교하고 EXCAT MATCH가 존재하는 경우 file2의 6열에 있는 file2에서 2열을 복사하고 1의 7열에 있는 file2에서 3열을 복사하고 싶습니다.
나는 출력을 다음과 같이 원한다:
1,T_EXIT,9053.0,10325.0,,OPEN,
2,V_TURN,120.0,11334.0,,GOAL,RECK
3,Q_ENTRY,122.0,190.0,,CLOSE,ALLOW
4,Q_ENTRY_RUN,130.0,569.0,, ,
아래 코드를 시도했지만 file2에서 두 개의 열 값 "column1"과 "column2"를 함께 저장하는 방법을 알 수 없습니다.
awk 'NR==FNR{A[$1]=$2;B[$1]=$3;next} ($1 in A) {$6=A[$1]; $7=B[$1]}1' file2 FS=, OFS=, file1 > test
답변1
$ awk 'NR==FNR{ data[$1]=$2 OFS $3; next }
($2 in data){ sub(/[^,]*,[^,]*$/, ""); $0=$0 data[$2] }1' OFS=, file2 FS=, file1
1,T_EXIT,9053.0,10325.0,,OPEN,
2,V_TURN,120.0,11334.0,,GOAL,RECK
3,Q_ENTRY,122.0,190.0,,CLOSE,ALLOW
4,Q_ENTRY_RUN,130.0,569.0,, ,
사용될 때 sub(/[^,]*,[^,]*$/, "")
, 우리가 볼 때데이터이전에 연결된 배열을 삭제한 다음 file2의 해당 키 값을 $0= $0 data[$2]
.