여러 파일의 행과 열을 비교하고 첫 번째 파일을 일치시키고 두 번째 파일을 비교합니다.

여러 파일의 행과 열을 비교하고 첫 번째 파일을 일치시키고 두 번째 파일을 비교합니다.

다음과 같은 두 개의 입력 파일이 있습니다.

파일 1

ABC001;text;text;5.00;text;text;;20/06/2020;http://www.domain.com/img/foobar4325.jpg
ABC002;text;text;15.20;text;text;;4/12/2021;http://www.domain.com/img/foobar545.jpg
ABC003;text;text;10.00;text;text;;24/07/2021;http://www.domain.com/img/foobar6y6.jpg
ABC004;text;text;4.90;text;text;;31/12/2021;http://www.domain.com/img/foobar5464.jpg
ABC007;text;text;10.30;text;text;;3/12/2021;http://www.domain.com/img/foobar45tgv.jpg
ABC010;text;text;9.00;text;text;;20/12/2021;http://www.domain.com/img/foobar2345f.jpg

file2("반올림된" 가격에는 .00이 포함되지 않음)

ABC001;text;text;6
ABC002;text;text;15.20
ABC003;text;text;10
ABC004;text;text;5.50
ABC005;text;text;25
ABC007;text;text;10.50
ABC010;text;text;9

원하는 출력:

ABC001;text;text;5.00;text;text;;20/06/2020;http://www.domain.com/img/foobar4325.jpg
ABC004;text;text;4.90;text;text;;31/12/2021;http://www.domain.com/img/foobar5464.jpg
ABC007;text;text;10.30;text;text;;3/12/2021;http://www.domain.com/img/foobar45tgv.jpg

행은 첫 번째 열과 일치해야 하며 일치하는 행을 "가격" 열(5번째)과 비교해야 하며 가격이 수치적으로 다른 경우 file1에서 행을 추출하고 싶습니다.

저는 이것을 사용합니다(GNU Awk 4.0.2):

awk -F';' -v RS='[\r\n]+' 'FNR==NR{righe[$1]; next} $1 in righe' file1.csv file2.csv > output.csv

두 개의 CSV 파일을 비교하는데 가격 조건을 추가할 수 없습니다.

답변1

올바른 열을 선택하고 먼저 읽어야 하며 file2, file1값 부분과 키 부분도 비교해야 합니다.

awk -F';' 'NR==FNR{ id[$1]=$4; next} ($1 in id) && id[$1]!=$4' file2 file1

여기서 $1배열에 사용되는 키ID그리고 $4가치 부분입니다.

관련 정보