Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Awk脚本-循环csv文件中两列的行值_Bash_Shell_Csv_Awk - Fatal编程技术网

Bash Awk脚本-循环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。

我正在处理一个巨大的CSV文件(
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