次の2つの入力ファイルがあります。
ファイル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
2つのCSVファイルを比較するために価格条件を追加することはできません。
答え1
正しい列を選択して最初に読み取る必要がありfile2
、file1
値部分とキー部分も比較する必要があります。
awk -F';' 'NR==FNR{ id[$1]=$4; next} ($1 in id) && id[$1]!=$4' file2 file1
ここで$1
配列に使用されるキーIDそして$4
価値の一部です。