我有3个文件,如下所示:
File1:
5372,5372,0,0,,1,0,1,1,0,1,0,0,0,0,0,0,1107,1107,,1.620000,1,2015-08-12,,,,,,,,,,,,,,,,,,,,,,,,
2110,2110,0,0,,0,0,1,0,0,0,0,1,1,1,1,1,1601,1601,,9.500000,1,2015-05-29,,,,,,,,,,,,,,,,,,,,,,,,
6900,6900,0,0,,1,0,1,1,0,0,0,0,0,0,0,0,1107,1107,,1.369000,1,2025-09-23,,,,,,,,,,,,,,,,,,,,,,,,
8755,8755,0,0,,1,0,1,1,0,0,0,0,0,0,0,0,1107,1107,,3.232000,1,2025-05-22,,,,,,,,,,,,,,,,,,,,,,,,
文件2:
5372,4074,,,,,2,,,
2110,4100,,,,,0,,,
6900,5246,,,,,0,,,
8755,5270,,,,,0,,,
文件3:
2187,2500
2188,1500
4227,2000
5270,3000
注意 File1 , File2 和 File3 的NF
分别为47
,{{1} }和10
需要检查 File1 中的2
是否等于$23
,如果是,则将2025
转换为 $ 21 * 1000 ,然后在数组中保存$ 1。
之后,从我们从 File1 获取的$21
的 File2 获取$2
。
现在我们应该将 File1 中的$1
与 File3 中的$21
进行比较,如果值大于或等于,则从打印$ 1文件1
上述文件的预期输出:
$2
我尝试过以下代码:
8755
但输出始终为 File3
请告知。
答案 0 :(得分:2)
您遇到的问题来自于您将,
和-
都计为字段分隔符。此外47
file1
中的-
字段非常令人困惑,因为在实际示例中,只有25个字段(甚至将awk -F'[,-]' 'NF==25{ if($23==2025) $21=$21*1000; A[$1]=$21 }
NF==10{ B[$2]=$1 }
NF==2{ if(A[B[$1]]>=$2) print B[$1]}' file1 file2 file3
计为字段分隔符)。无论如何,从你的问题中提取你应该写的文件
8755
结果:
NF==25
根据您的实际案例情况,将NF==47
更改为<img width:"300px" height="400px" height="class="lazy" data-original="../'.$image .'" alt="Mural Image"/>';
。
答案 1 :(得分:1)
试试这个:
awk -F',' '
NF == 47 { A[$1] = $23 ~ /2025/ ? $21*1000 : $21 }
NF == 10 { B[$2] = $1 }
NF == 2 && A[B[$1]] >= $2 { print B[$1] }'