File 3을 생성하기 위해 두 파일(File 1과 File 2)을 공통 열(1ª)로 연결하려고 시도했지만 생성된 파일이 작동하지 않습니다. 누구든지 나를 도와줄 수 있나요? 나는 다음 명령을 사용했습니다.
awk 'NR==FNR {h[$1] = $0; next} {print h[$1],$0}' file1 file2 > file3
파일 1.
1 1767 0 1986 28061997 1 1 1 0 29031998 972 34176 9 1 9 9 55 97 42 1 0
2 1876 0 1986 25051995 1 1 1 0 22072000 952 30438 1 1 3 9 1009 95 25 4 0
3 5878 0 1986 16071996 1 1 1 0 22071997 963 30438 4 1 3 9 1009 96 40 4 0
파일 2:
1 0 5 8 25031998 2 11 1071997 943 11 1101997 944 11 1011998 951 18 1011998 95 BX1001337 AX54651 BR909511 0
2 0 53 8 19021996 2 8 22031996 6 8 27051996 1 14 27051996 2 7 27051996 2 15 27051996 2 8 21021997 2 8 22031997 6 8 20041997 1 14 20041997 3 15 20041997 3 8 22071997 6 8 28091998 1 14 28091998 4 15 28091998 4 8 25061999 2 8 22091999 6 8 7032000 1 14 7032000 5 15 7032000 3 16 7032000 1 11 1071995
923 11 1101995 924 11 1011996 931 18 1011996 93 11 1041996 932 11 1071996 933 11 1101996 934 11 1011997 941 18 1011997 94 11 1041997 942 11 1071997 943 11 1101997 944 11 1011998 951 18 1011998 95 11 1041998 952 17 1041998 1005 11 1071998 953 17 1071998 1007 11 1101998 954 11 1011999 961 18 1011999 96 11 1041999 962 17 1041999 1009 11 1071999 963 17 1071999 1007 11 1101999 964 17 1101999 1003 11 1012000 971 18 1012000 97 17 1012000 1005 11 1042000 972 11 1072000 973 BR1001881 AX62116 BR872756 0
3 0 6 8 12041997 2 11 1101996 934 11 1011997 941 18 1011997 94 11 1041997 942 11 1071997 943 BR1003576 AX52602 BR830819 0
파일 3. 작동이 잘못되었습니다. 2행에 파일 2 배치ª.
1 1767 0 1986 28061997 1 1 1 0 29031998 972 34176 9 1 9 9 55 97 42 1 0
1 1 0 5 8 25031998 2 11 1071997 943 11 1101997 944 11 1011998 951 18 1011998 95 BR1001337 AX54651 BR909511 0
2 1876 0 1986 25051995 1 1 1 0 22072000 952 30438 1 1 3 9 1009 95 25 4 0
2 4 0 53 8 19021996 2 8 22031996 6 8 27051996 1 14 27051996 2 7 27051996 2 15 27051996 2 8 21021997 2 8 22031997 6 8 20041997 1 14 20041997 3 15 20041997 3 8 22071997 6 8 28091998 1 14 28091998 4 15 28091998 4 8 25061999 2 8 22091999 6 8 7032000 1 14 7032000 5 15 7032000 3 16 7032000 1 11 1071995
923 11 1101995 924 11 1011996 931 18 1011996 93 11 1041996 932 11 1071996 933 11 1101996 934 11 1011997 941 18 1011997 94 11 1041997 942 11 1071997 943 11 1101997 944 11 1011998 951 18 1011998 95 11 1041998 952 17 1041998 1005 11 1071998 953 17 1071998 1007 11 1101998 954 11 1011999 961 18
1011999 96 11 1041999 962 17 1041999 1009 11 1071999 963 17 1071999 1007 11 1101999 964 17 1101999 1003 11 1012000 971 18 1012000 97 17 1012000 1005 11 1042000 972 11 1072000 973 BR1001881 AX62116 BR872756 0
3 5878 0 1986 16071996 1 1 1 0 22071997 963 30438 4 1 3 9 1009 96 40 4 0
3 4 0 6 8 12041997 2 11 1101996 934 11 1011997 941 18 1011997 94 11 1041997 942 11 1071997 943 BR1003576 AX52602 BR830819 0
파일 3. 나는 이것을 원한다:
1 1767 0 1986 28061997 1 1 1 0 29031998 972 34176 9 1 9 9 55 97 42 1 0 0 5 8 25031998 2 11 1071997 943 11 1101997 944 11 1011998 951 18 1011998 95 BR1001337 AX54651 BR909511 0
2 1876 0 1986 25051995 1 1 1 0 22072000 952 30438 1 1 3 9 1009 95 25 4 0 0 53 8 19021996 2 8 22031996 6 8 27051996 1 14 27051996 2 7 27051996 2 15 27051996 2 8 21021997 2 8 22031997 6 8 20041997 1 14 20041997 3 15 20041997 3 8 22071997 6 8 28091998 1 14 28091998 4 15 28091998 4 8 25061999 2 8 22091999 6 8 7032000 1 14 7032000 5 15 7032000 3 16 7032000 1 11 1071995 923
11 1101995 924 11 1011996 931 18 1011996 93 11 1041996 932 11 1071996 933 11 1101996 934 11 1011997 941 18 1011997 94 11 1041997 942 11 1071997 943 11 1101997 944 11 1011998 951 18 1011998 95 11 1041998 952 17 1041998 1005 11 1071998 953 17 1071998 1007 11 1101998 954 11 1011999 961 18 1011999 96 11 1041999 962 17 1041999 1009 11 1071999 963 17 1071999 1007 11 1101999 964 17 1101999 1003 11 1012000 971 18 1012000 97 17 1012000 1005 11 1042000 972 11 1072000 973 BR1001881 AX62116 BR872756 0
3 5878 0 1986 16071996 1 1 1 0 22071997 963 30438 4 1 3 9 1009 96 40 4 0 0 6 8 12041997 2 11 1101996 934 11 1011997 941 18 1011997 94 11 1041997 942 11 1071997 943 BR1003576 AX52602 BR830819 0
답변1
이 안감을 사용해 보세요!
awk 'FNR==NR{A[$1]=$0;next}{line="";for(i=2;i<=NF;i++)line=line $i" ";sub(" $","",line);if ($1 in A)print A[$1]" "line;}' file1.txt file2.txt > file3
나가
1 1767 0 1986 28061997 1 1 1 0 29031998 972 34176 9 1 9 9 55 97 42 1 0 0 5 8 25031998 2 11 1071997 943 11 1101997 944 11 1011998 951 18 1011998 95 BX1001337 AX54651 BR909511 0
2 1876 0 1986 25051995 1 1 1 0 22072000 952 30438 1 1 3 9 1009 95 25 4 0 0 53 8 19021996 2 8 22031996 6 8 27051996 1 14 27051996 2 7 27051996 2 15 27051996 2 8 21021997 2 8 22031997 6 8 20041997 1 14 20041997 3 15 20041997 3 8 22071997 6 8 28091998 1 14 28091998 4 15 28091998 4 8 25061999 2 8 22091999 6 8 7032000 1 14 7032000 5 15 7032000 3 16 7032000 1 11 1071995 923 11 1101995 924 11 1011996 931 18 1011996 93 11 1041996 932 11 1071996 933 11 1101996 934 11 1011997 941 18 1011997 94 11 1041997 942 11 1071997 943 11 1101997 944 11 1011998 951 18 1011998 95 11 1041998 952 17 1041998 1005 11 1071998 953 17 1071998 1007 11 1101998 954 11 1011999 961 18 1011999 96 11 1041999 962 17 1041999 1009 11 1071999 963 17 1071999 1007 11 1101999 964 17 1101999 1003 11 1012000 971 18 1012000 97 17 1012000 1005 11 1042000 972 11 1072000 973 BR1001881 AX62116 BR872756 0
3 5878 0 1986 16071996 1 1 1 0 22071997 963 30438 4 1 3 9 1009 96 40 4 0 0 6 8 12041997 2 11 1101996 934 11 1011997 941 18 1011997 94 11 1041997 942 11 1071997 943 BR1003576 AX52602 BR830819 0
A의 첫 번째 열이 두 행을 하나로 결합하고 인쇄하는 경우 파일 1의 첫 번째 열을 행 A에 저장하고 파일 2 읽기를 시작한 다음 첫 번째 열을 건너뛰고 필드를 행에 저장합니다.