3

次のようなファイルがあります。

1 12:00

1 12:34

1 01:01

1 08:06

2 09:56

2 06:52
...

そして、最初の列の各値から2番目の列の最大値を選択したいと思います。

新しいファイル:

1 12:34

2 09:56 
...

これどうやってするの??前もって感謝します!

4

4 に答える 4

4
awk '
  { if ($2>values[$1]) values[$1]=$2; }
  END {
    for (i in values) {
      print i,values[i]
    }
  }
' file
于 2012-05-05T13:20:37.160 に答える
2

これはあなたのために働くかもしれません:

sort -k1,1n -k2,2r file | sort -uk1,1
于 2012-05-05T13:47:20.350 に答える
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

見てください

于 2012-05-05T13:26:51.057 に答える
0

バッシュのみ。

# 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
于 2012-05-06T17:12:54.900 に答える