2012-05-05 2 views
3

У меня есть файл, как это:как выбрать наибольшее число из столбца 2 в соответствии со значением столбец 1 Баш скрипт-SED-AWK

1 12:00 

1 12:34 

1 01:01 

1 08:06 

2 09:56 

2 06:52 
... 

, и я хочу, чтобы выбрать из каждого значения первого столбца наибольшего значение второго.

Новый файл:

1 12:34 

2 09:56 
... 

Как я могу это сделать ?? Заранее спасибо!

ответ

4
awk ' 
    { if ($2>values[$1]) values[$1]=$2; } 
    END { 
    for (i in values) { 
     print i,values[i] 
    } 
    } 
' file 
1
perl -nale '$F[1]=~s/://;$h{$F[0]}=$F[1]if($F[1]>$h{$F[0]}); 
    END{for(sort keys(%h)){($x=$h{$_})=~s/^(..)(..)$/\1:\2/;print"$_ $x"}}' file 

See it

2

Это может работать для вас:

sort -k1,1n -k2,2r file | sort -uk1,1 
0

Bash только;

# build arrays with 1.column value in its name 
# use all digits in the row as index, the row as value 
while read a b ; do 
    eval "array$a[$a${b//:/}]=\"$a $b\"" 
done < "$infile" 

# select the last element of each array 
for name in ${!array*}; do 
    last='${'${name}'[-1]}' 
    eval "echo ${last}" 
done 
Смежные вопросы