Compter occurrence et addition de données

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
3 761
1 155
C’est cette partie là qui fait un tri numérique sur la partie après le premier « : » (donc la deuxième colonne correspondant aux gains)
Bloc de code:
sort -t':' -k2 -nr
Cela ne marchera pas avec ton printf

Le sed s’occupera ensuite de reformater l’affichage : partie \1 et partie \2
Bloc de code:
sed "s/^\(.*\):\(.*\)$/\1 \2 euro(s)  /"
Version du sed avec le > :
Bloc de code:
sed "s/^\(.*\):\(.*\)$/\1  > \2 Euro(s)  /"
Cela devrait donner l’équivalent de ton dernier printf
 
  • J’aime
Réactions: symbol

symbol

Membre émérite
13 Octobre 2004
536
25
Nickel :)

Je regardais la commande d'insertion (insertion sans effacer le texte deja présent) de texte a la toute premier ligne d'un fichier texte.
J'ai trouvé :
Bloc de code:
sed "1i\mon_texte \n " fichier.txt
mais ca me retourne un erreur.
sed: 1: "1i\mon_texte \n ": extra characters after \ at the end of i command
 
Dernière édition:

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
3 761
1 155
sed fonctionne un peu différemment sur mac ;)

Pour ajouter une ligne "mon_texte" au début de ton fichier :
Bloc de code:
sed $'1i\
mon_texte\\\n' fichier.txt
 
  • J’aime
Réactions: symbol

symbol

Membre émérite
13 Octobre 2004
536
25
Ecatomb,

J'ai bien suivi tes conseils, mais ca coince ;-)

Le truc en dessous fonctionne pas vraiment.
Je ne retrouve pas le résultat dans le fichier PODIUM.txt, mais seulement dans le terminal.

Bloc de code:
head -3 /Users/xxx/Desktop/KENODATA/RESULTATSTATS.txt | tail -3   > /Users/xxx/Desktop/KENODATA/PODIUM.txt
sed $'1i\
LES 3 MEILLEURS PRONOTIQUEURS\\\n' /Users/xxx/Desktop/KENODATA/PODIUM.txt
Et si je met "> /Users/xxx/Desktop/KENODATA/PODIUM.txt" ou ">> /Users/xxx/Desktop/KENODATA/PODIUM.txt", c'est pire le terminal est figé.

MAJ : J'ai trouvé (c'est peut etre pas la meilleure solution (?)
Bloc de code:
> /Users/xxx/Desktop/KENODATA/PODIUM.txt
echo "LES 3 MEILLEURS PRONOTIQUEURS" >> /Users/xxx/Desktop/KENODATA/PODIUM.txt
head -3 /Users/xxx/Desktop/KENODATA/RESULTATSTATS.txt | tail -3   >> /Users/xxx/Desktop/KENODATA/PODIUM.txt
 
Dernière édition:

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
3 761
1 155
Ta dernière version est plutôt bien. Voici la même un peu mieux :
Bloc de code:
echo "LES 3 MEILLEURS PRONOTIQUEURS" > /Users/xxx/Desktop/KENODATA/PODIUM.txt
head -3 /Users/xxx/Desktop/KENODATA/RESULTATSTATS.txt >> /Users/xxx/Desktop/KENODATA/PODIUM.txt
Ou avec sed :
Bloc de code:
head -3 /Users/xxx/Desktop/KENODATA/RESULTATSTATS.txt > /Users/xxx/Desktop/KENODATA/PODIUM.txt
sed -i '' $'1i\
LES 3 MEILLEURS PRONOTIQUEURS\\\n' /Users/xxx/Desktop/KENODATA/PODIUM.txt
Vu ce que tu veux faire, utilise plutôt la première de ces deux versions. Plus simple à comprendre et modifier si besoin :)
 

symbol

Membre émérite
13 Octobre 2004
536
25
Qui fut dit, fut fait :) Code rectifié.

Je voudrais ajouter l'heure locale a la commande

Bloc de code:
    echo "${affichagedate} ${nickName} : X${multiplier} (${myMatches#,}) [$((${matchCount}-1))/${#myNumbersThisGame[*]}]▶ ${gamePayouts[${i}]} € X${multiplier} -------- ★★ $((${gamePayouts[${i}]}*${multiplier})) € ★★"  | tr '[[:lower:]]' '[[:upper:]]' | tr -d '@' > /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp

Dois-je ajouter tel quel
Bloc de code:
date '+%T %r'
ou (je pense que c'est c'est la bonne réponse)
Bloc de code:
${date '+%T'}
Ce n'est pas indiqué dans les explications.

Merci
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
3 761
1 155
A toi de voir le format de date que tu veux. Par exemple :
Bloc de code:
date_actuelle=$(date "+%d-%m-%Y %H:%M")
echo "$date_actuelle"
 

symbol

Membre émérite
13 Octobre 2004
536
25
Ok merci

Ce que je comprends pas, "date_actuelle" c'est une variable.
pourquoi c'est pas indiqué comme pour les autres variables entre 2 { } ??

c'est echo "$date_actuelle"
alors que logiquement ca devrait etre echo ${date_actuelle}
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
3 761
1 155
Il faut mieux mettre des {}
Ce n’est pas obligatoire mais recommandé pour éviter des problèmes comme dans le cas suivant :
Bloc de code:
variable="test"
echo "${variable}ok"
echo "$variableok"
 

symbol

Membre émérite
13 Octobre 2004
536
25
Bonjour :)

Pour convertir un fichier de UTF8 en UTF16, est ce une commande qui ressemble a ca "iconv -f utf-8 -t utf-16 file1.txt file2.txt" ?

Merci
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
3 761
1 155
On ne doit pouvoir donner qu'un seul fichier en paramètre, il faut donc faire comme ceci :
Bloc de code:
iconv -f 'UTF-8' -t 'UTF-16' "fichier_source" > "fichier_cible"
 

symbol

Membre émérite
13 Octobre 2004
536
25
Je demande ca, car pour afficher "€" dans mon forum (enfin dans certaines parties du forum) il faut que le texte soit en UTF16, sinon le symbole "€" a pas de forme.

Ps : Merci :)

Est ce que le fichier source peut avoir le même nom que le fichier cible ?
 
Dernière édition:

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
3 761
1 155
Non, mais tu peux le renommer à la suite du iconv :
Bloc de code:
mv "fichier_cible" "fichier_source"
 

symbol

Membre émérite
13 Octobre 2004
536
25
Si j'ai bien compris.

fichier1 (source) fichier2 (cible) -> mv -> fichier2 (devient fichier1) et ecrase fichier1 ?
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
3 761
1 155
C'est ça, le mv renomme (ou déplace) le fichier donné en premier paramètre pour lui donner celui en deuxième paramètre.
S'il existe déjà, cela le remplace