Bash Awk脚本-循环csv文件中两列的行值
我正在处理一个巨大的CSV文件(Bash Awk脚本-循环csv文件中两列的行值,bash,shell,csv,awk,Bash,Shell,Csv,Awk,我正在处理一个巨大的CSV文件(filtest.CSV),其中包含两列。从第1列中,我想读取当前行并将其与前一行的值进行比较。如果大于或等于,则继续比较,如果当前单元格的值小于上一行,则我想跳到第二列并获取当前行(第二列)中的值。接下来,我想将第1列中的较大值除以第2列同一单元格中的值和第1列中较小值的值。让我用这个例子来澄清。例如,在下表中:根据我的要求,第1列中的较小值为327(因为327小于之前的值340),然后取500(第2列中对应的单元格值)最后我们将340除以500,得到值0.68。
filtest.CSV
),其中包含两列。从第1列中,我想读取当前行并将其与前一行的值进行比较。如果大于
或等于
,则继续比较,如果当前单元格的值小于上一行,则我想跳到第二列并获取当前行(第二列)中的值。接下来,我想将第1列中的较大值除以第2列同一单元格中的值和第1列中较小值的值。让我用这个例子来澄清。例如,在下表中:根据我的要求,第1列中的较小值为327(因为327小于之前的值340),然后取500(第2列中对应的单元格值)最后我们将340除以500,得到值0.68。我的bash脚本应该在我们将值打印到控制台后立即退出
338,800
338,550
339,670
340,600
327,500
301,430
299,350
284,339
284,338
283,335
283,330
283,310
282,310
282,300
282,300
283,290
在下面的脚本中,我尝试在两列的同一行上执行除法操作,效果很好
awk -F, '$1<p && $2!=0{
val=$1/$2
if(val>=0.85 && val<=0.9)
{
print "value is:" $1/p
print "A"
}
else if(val==0.8)
{
print "B"
}
else if(val>=0.5 && val <=0.7)
{
print "C"
}
else if(val==0.5)
{
print "E"
}
else
{
print "D"
}
exit
}
{
p=$1
}' filetest.csv
awk-F','1美元=0.85&&val=0.5&&val来自第一个描述
awk -F, '$1<prev{print prev/$2;exit}{prev=$1}' <input.txt
awk-F,“$1我已经这样做了,你能解释一下“循环两列中的值并执行控制语句”吗示例输入和预期输出示例在第一段中,亲爱的。第一段中的确切位置?我也不理解这个问题。因此,根据发布的示例输入,脚本的预期输出是0.68
?关于的所有内容是什么?我的if-else语句的标准是什么(如果该值大于等于0.8且小于等于0.7且小于等于0.5,则将val=$1/$2
替换为val=p/$2