Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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 如何找到最大的元素并将其存储在数组中_Bash_Awk - Fatal编程技术网

Bash 如何找到最大的元素并将其存储在数组中

Bash 如何找到最大的元素并将其存储在数组中,bash,awk,Bash,Awk,我有如下所示的文件。我必须找到每个时间戳的最大值。所以我必须找到最大值(2434268129461626),最大值(3217476445013372)等等。。。(因为这些数字有一个共同的时间戳) 我写了这段代码,但出现了错误。有人能纠正我吗?提前谢谢 #!/bin/bash awk '{ if [ temp -ne $1 ] then temp = $1; big[$1] = $2 fi elif [temp -eq $1] then if [$2 g

我有如下所示的文件。我必须找到每个时间戳的最大值。所以我必须找到最大值(2434268129461626),最大值(3217476445013372)等等。。。(因为这些数字有一个共同的时间戳)

我写了这段代码,但出现了错误。有人能纠正我吗?提前谢谢

#!/bin/bash
awk '{ if [ temp -ne $1 ] 
       then temp = $1; big[$1] = $2
       fi
       elif [temp -eq $1] then if [$2 gt $big[$1] ] big[$1] = $2 ; fi 
       fi

     }' plots.dat   

您混合了AWK和Bash语法,并且每个语法中都有错误

下面是一个纯Bash解决方案:

#!/bin/bash
while read -r timestamp value
do
    if (( value > ${array[timestamp]} + 0 ))
    then
        array[timestamp]=$value
    fi
done < plots.dat
for i in ${!array[@]}
do
    echo "$i ${array[i]}"
done
#/bin/bash
while read-r时间戳值
做
if((值>${array[timestamp]}+0))
然后
数组[时间戳]=$value
fi
完成
@Sharat:如果这正确回答了您的问题,请单击票数下的复选标记接受。
$ awk '$2>values[$1]{values[$1]=$2}END{for(i in values)print values[i],i } ' file
2946 1280449531
4764 1280449532
6937 1280449533
8980 1280449534
10879 1280449535
12860 1280449536
#!/bin/bash
while read -r timestamp value
do
    if (( value > ${array[timestamp]} + 0 ))
    then
        array[timestamp]=$value
    fi
done < plots.dat
for i in ${!array[@]}
do
    echo "$i ${array[i]}"
done