.csv가 두 개 있습니다.
items-to-change.txt는 고유 ID의 단일 열 목록입니다.
218294
222084
197931
198161
197432
201021
214009
items-by-location.txt에는 고유 ID와 위치 번호가 있습니다(탭으로 구분됨)
ID Location
197432 1
201021 2
214009 4
214438 5
214492 1
...
items-to-change.txt의 ID와 일치하는 ID의 경우 items-by-location.txt의 위치 필드를 6으로 변경한 다음 이를 기반으로 새로운 .csv(예: items-by-location2)를 생성해야 합니다. . txt
items-by-location2.txt는 다음과 같아야 합니다:
197432 6
201021 6
214009 6
214438 5
214492 1
...
awk가 좋은 해결책인가요? awk에 검색 매개변수가 있다는 것을 알고 있지만 awk를 사용하여 items-to-change.txt를 읽고 ID를 얻은 다음 items-by-location.txt를 한 줄씩 읽고 ID를 비교하는 방법이 명확하지 않습니다. 첫 번째 열 ID가 일치하고 items-by-location.txt의 두 번째 열만 일치합니다.
누구든지 예를 들어 줄 수 있습니까?
답변1
변경 목록을 배열에 추가한 다음 기본 입력 파일을 처리하는 동안 배열을 확인하는 것은 훌륭하게 작동합니다 awk
.
$ awk 'FILENAME=="changeset" { replace[$1] = 1 } FILENAME=="input" {if( $1 in replace ) { $2 = 6 }; print $1,$2}' changeset input
ID Location
197432 6
201021 6
214009 6
214438 5
214492 1