• # Solution

    Posté par  (site web personnel) . Évalué à 5.

    Je m'ennuyais !

    cat y.txt | awk '{sum[$1]=sum[$1]+$2} END{for(key in sum) { print key" "sum[key] }}'

    • [^] # Re: Solution

      Posté par  (site web personnel) . Évalué à 4.

      Je m'ennuyais !

      uuoc !!

       awk '{sum[$1]=sum[$1]+$2} END{for(key in sum) { print key" "sum[key] }}' y.txt

      avec y.txt contenant le fichier à analyser ;-)

      • [^] # Re: Solution

        Posté par  (site web personnel) . Évalué à 2.

        Toujours sans cat :

        cut -d' ' -f1 /tmp/y.txt | sort -u | xargs -n1 -IK awk '$1=="K"{s+=$2}END{print "K " s}' /tmp/y.txt

        pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

        • [^] # Re: Solution

          Posté par  (site web personnel) . Évalué à 4.

          Et sans rien d'autre que bash :

          declare -A M ; while read k v ; do test -z ${M[$k]} && M[$k]=0  ; M[$k]=$((${M[$k]} + $v)) ; done < /tmp/y.txt ; for k in ${!M[@]} ; do echo $k ${M[$k]} ; done

          pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: Solution

      Posté par  . Évalué à 2.

      tu n'aimes pas le += ?

  • # HS

    Posté par  . Évalué à 1. Dernière modification le 05 septembre 2014 à 18:20.

    Je suis complètement hors sujet, mais comme j'apprends le haskell en ce moment je m'entraîne :

    import Control.Applicative
    import qualified Data.Map as Map
    import Data.List
    
    main = do
        contents <- (Map.toList . Map.fromListWith (+) . map (myRead . words) . lines) <$> readFile "y.txt"
        putStrLn . concat . intersperse "\n" . map (\(x,y) -> x ++ " " ++ show y) $ contents 
           where myRead [a, b] = (a, (read b)::Int)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.