file1을 위에서 아래로 읽고 두 번째 열을 file2의 세 번째 열과 일치시켜야 하는 프로젝트 요구 사항이 있습니다. 두 파일 모두 탭으로 구분됩니다.
레코드가 일치하면 파일 1의 전체 레코드를 새 파일 3에 써야 하고, 일치하지 않으면 동일한 레코드를 오류 파일(파일 4)에 써야 합니다. 파일 1과 파일 2에는 500-510개의 레코드가 포함되어 있습니다. File1은 처음부터 읽어야 하며 file2의 열 3에 있는 열 2의 값을 읽어야 합니다(필요한 경우 위에서 아래로 전체 검색).
파일 1
ZZA 01 LIST18
ZZY 02 LIST38
UTW 80 LIST100
OOP 11 LIST56
파일 2
A1 21138 99999 LIST18
W1 20223 99999 LIST44
Z9 20355 99999 LIST56
O9 21002 21154 LIST11
파일 3
ZZA 01 LIST18
OOP 11 LIST56
파일 4
ZZY 02 LIST38
UTW 80 LIST100
답변1
file1의 열 3을 file2의 열 4와 일치시키려면 다음을 사용할 수 있습니다 awk
.
awk -F'\t' '
NR==FNR{ arr[$4]; next }
{ print > (($3 in arr) ? "file3" : "file4") }
' file2 file1
먼저 file2를 읽고 배열의 네 번째 필드를 arr
인덱스로 저장합니다.
그런 다음 file1과 print
각 레코드를 읽습니다. 세 번째 필드가 배열에 있으면 출력을 file3으로 리디렉션하고, 그렇지 않으면 file4로 리디렉션합니다.