私はこれらの 2 つのファイルを持っています: file1
2537
1279
1075
12799
1474
135441
1260
1169
1281
10759
と file2
1070,1279960511,BR,USA,UNITED STATES
1278,1279960511,US,USA,UNITED STATES
1279,1279960527,CA,CAN,CANADA
1289,1279967231,US,USA,UNITED STATES
2679,1279971327,CA,CAN,CANADA
1279,1279971839,US,USA,UNITED STATES
1279,1279972095,CA,CAN,CANADA
1279,1279977471,US,USA,UNITED STATES
127997,1279977983,CA,CAN,CANADA
127997,1279980159,US,USA,UNITED STATES
127998,1279980543,CA,CAN,CANADA
107599,1075995007,US,USA,UNITED STATES
107599,1075995023,VG,VGB,VIRGIN ISLANDS, BRITISH
107599,1075996991,US,USA,UNITED STATES
107599,1075997071,CA,CAN,CANADA
私がしたい:file1の各エントリに対してfile2の最初の列を通過し、この列の値が「file1」要素よりも大きくなると、file2の3番目の要素を返します。多くの方法を試しましたが、どれもうまくいきませんでした空のファイルまたは最後の試行が予想よりも何か差分を出力します:
awk -F, '
BEGIN {FS="," ; i=1 ; while (getline < "file2") { x[i] = $1 ; y[i] = $3 ; i++ }}
{ a[$1] = $1 ; h=1 ; while (x[h] <= a[$1]) { h++ } ; { print y[h] }}' file1
しかし、これは永遠に実行され、止まらず、何も助けてくれませんplzzzこれは何日も私を殺していて、感謝をあきらめています
望ましい出力:
#this is a comment and i ll write file 2 as if it was a matrix
because file1[1] > file2[1,1] ... and file1[1] > file2[2,1] .... and file1[1] > file2[3,1] ... and file1[1] > file2[4,1] but file1[1] < file2[5,1] ... then print file2[4,3] ... which is "US"
now go to file1[2] :
file[2] > file2[1,1] ... and file1[2] > file2[2,1] ... but file1[2] <= file2[3,1] ... then print file2[3,3]
要約すると、印刷したい:「最初の行の3番目の要素(col)(file2から)file1要素が最初になります>次の行の最初の要素(file2)