긴 줄이 포함된 파일과 참조 데이터가 포함된 파일이 있습니다.펄롱,프레이프.
내 목표는 특정 필드를 검색하는 것입니다.펄롱행은 이를 다음의 모든 값과 비교합니다.프레이프일치하는 경우 지정된 값으로 바꿉니다.
기본적으로 파일 검색펄롱- 1행 - 이의제기 4프레이프- 모든 행 - 필드 1.
일치하면 필드 6을 필드 2와 비교하고 일치하면 필드 4를 필드 3으로 바꿉니다. 1 또는 2가 일치하지 않으면 무시되고 변경되지 않습니다.
펄롱다음 데이터가 포함되어 있습니다.
Name|location|111|22|333|4444| |6666||8
Name|location| |56|67|| |6666||8
일부 필드는 비어 있고 일부 필드에는 공백이 있지만 모든 필드는 "|"로 구분됩니다.
프레이프다음 데이터가 포함되어 있습니다.
574|5327|1000
22|4444|2000
67|77|3000
반품:
Name|location|111|2000|333|4444| |6666||8
Name|location| |56|67|| |6666||8
나는 이것이 기능으로 가능하다는 것을 알고 있지만 사람들이 Awk에서 작업할 수 있는 복잡성에 충격을 받았습니다. 그래서 나는 그것을 사용하려고 노력했지만 어떤 문자열 검색/편집기도 작동할 것입니다.
답변1
귀하의 진술에 따르면 필드 1과 2를 키로 사용하여 해시(연관 배열)를 구성한 다음 필드 4와 6을 조회 키로 사용 RETURN
하려는 것 같습니다 .Fref
Flong
$ awk -F'|' '
BEGIN{OFS = FS}
NR == FNR {a[$1 FS $2] = $3; next}
$4 FS $6 in a {$4 = a[$4 FS $6]}
1
' Fref Flong
Name|location|111|2000|333|4444| |6666||8
Name|location| |56|67|| |6666||8