Même effet ?

symbol

Membre actif
13 Octobre 2004
536
25
Bonjour

Est-il preferable de faire :

Bloc de code:
> /Users/xxx/Desktop/KENODATA/TOP1.txt
head -1 /Users/xxx/Desktop/KENODATA/RESULTATSTATS.txt | tail -1   >> /Users/xxx/Desktop/KENODATA/TOP1.txt

ou

Bloc de code:
head -1 /Users/xxx/Desktop/KENODATA/RESULTATSTATS.txt | tail -1   > /Users/xxx/Desktop/KENODATA/TOP1.txt

Merci
 
Le "head -1" ne te retournera qu'une seul ligne (la première du fichier). Aucun intérêt de faire ensuite un "tail -1" qui lui aussi te retournera une seule ligne (donc celle issue du head). Il est donc préférable d'avoir :
Bloc de code:
head -1 /Users/xxx/Desktop/KENODATA/RESULTATSTATS.txt > /Users/xxx/Desktop/KENODATA/TOP1.txt
 
Il me semblait bien pour head et tail.
En fait je voulais savoir si le 1er "> /Users/xxx/Desktop/KENODATA/TOP1.txt" n'etait pas superflu
 
Autre probleme :-/

Ce code fonctionne sans pb :

Bloc de code:
#converti l'encodage format UTF-8 en UTF-16 afin afficher le symbole "€" (puis renomme PODIUMbis.txt en PODIUM.txt)
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/PODIUM.txt" > "/Users/xxx/Desktop/KENODATA/PODIUMbis.txt"
mv "/Users/xxx/Desktop/KENODATA/PODIUMbis.txt" "/Users/xxx/Desktop/KENODATA/PODIUM.txt"

Je fais la meme chose avec un autre fichier texte,

Bloc de code:
#converti l'encodage format UTF-8 en UTF-16 afin afficher le symbole "€" et "★" (puis renomme RESULTATSHISTORIQUEUTF16.txt en RESULTATSHISTORIQUE.txt)
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt" > "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUEUTF16.txt"
mv "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUEUTF16.txt" "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt"

et j'ai l'erreur dans le terminal :
Bloc de code:
iconv: /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt:5:0: cannot convert

Pourtant le fichier est bien en UTF-16 et lisible
Capture_d_e_cran_2018_07_17_a_08_24_32.png


???? je comprends pas :-/
 
Il me semblait bien pour head et tail.

En fait je voulais savoir si le 1er "> /Users/xxx/Desktop/KENODATA/TOP1.txt" n'etait pas superflu

Ma version était en une seule ligne, donc oui


Pour ton autre problème, il doit y avoir un caractère qui gêne (pas forcément un qui s’affiche. Essaie de faire ce « tr » avant le iconv. Cela supprimera un caractère Windows invisible qui pourrait être source de problèmes :
tr -d "\r" "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt" | iconv -f 'UTF-8' -t 'UTF-16' ...
 
Dernière édition par un modérateur:
Je viens de faire ton conseil.

J'ai
Bloc de code:
iconv: /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt:9:0: cannot convert

De plus ca bloque le terminal.


Pour info le fichier RESULTATSHISTORIQUE.txt est fait a partir de
Bloc de code:
####### inscription dans /RESULTATSHISTORIQUE.txt gain SANS multiplicateur  #######
    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
   cat /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt >> /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp
   head -100 /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp > /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt
   rm -f /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp
 
Il manquait le nom du fichier, ligne corrigée dans mon post précédent

Mais vu comment ton fichier est créé, ça ne doit pas être ça. Peut-être un pb de format du fichier source ?
 
donc, j'ai mis

Bloc de code:
tr -d "\r" "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt" | iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt" > "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUEUTF16.txt"

et j'ai cette fois :

Bloc de code:
usage: tr [-Ccsu] string1 string2
       tr [-Ccu] -d string1
       tr [-Ccu] -s string1
       tr [-Ccu] -ds string1 string2
iconv: /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt:5:0: cannot convert
 
Peux-être comme ceci (difficile sans le terminal sous la main) :
Bloc de code:
"/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt | tr -d "\r" | iconv...

Pas de fichier à indiquer à iconv, il prendra en entrée le retour du tr
 
Pour info.

La commande d'origine :
Bloc de code:
#converti l'encodage format UTF-8 en UTF-16 afin affiché le symbole "€" et "★" (puis renomme RESULTATSHISTORIQUEUTF16.txt en RESULTATSHISTORIQUE.txt)
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt" > "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUEUTF16.txt"
mv "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUEUTF16.txt" "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt"

fonctionne 1 fois (la premiere fois ou le script est lancé), mais quand de nouveaux résultats sont ajoutés a la suite des premiers (dans le fichier RESULTATSHISTORIQUE.txt), j'obtiens une erreur a ce moment la.

Je suis un peu perdu :-/ est-ce que j'essai de convertir 2 fois le fichier UTF-8 vers UTF-16 ... Je commande a avoir du mal a suivre.

Ce qui se passe :
1) Fichier RESULTATSHISTORIQUE.txt créé
2) ajout des données dans le fichier
3) convertion UTF8 vers UTF16

4) le script est relancé, on recommence etape 1 (sans création puisque fichier existe deja, c'est un ajout de données qui est fait).
 
Ah je vois.
Les données sont en UTF8 et converties en UTF16. Ensuite tu ajoutes des données UTF8 à celle en UTF16 (donc il y a un mix des deux) et le iconv ne fonctionne plus.

La solution c’est de faire le iconv avant de rajouter des données dans le fichier final.
Ou alors de garder une version du fichier en UTF8 dans laquelle tu ajoutes des lignes. Puis tu le convertis en UTF16 pour créer ton fichier final.

Le mix UTF8/16 dans le même fichier est en tout cas la source de ton pb
 
Je soupconnais ce problème, mais je préférais ton analyse avant de faire quoique soit :)

Je remedier à la cause.

Merci.
 
Ecatomb, je suis completement a la ramasse avec ce probleme de UTF8 -> UTF16 (RESULTATSHISTORIQUE.txt).

Je vois pas comment resoudre le PB (malgré avoir lu tes conseils).
 
Dernière édition:
Remplace ceci
Bloc de code:
####### inscription dans /RESULTATSHISTORIQUE.txt gain SANS multiplicateur  #######
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
cat /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt >> /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp
head -100 /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp > /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt
rm -f /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp

#converti l'encodage format UTF-8 en UTF-16 afin affiché le symbole "€" et "★" (puis renomme RESULTATSHISTORIQUEUTF16.txt en RESULTATSHISTORIQUE.txt)
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt" > "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUEUTF16.txt"
mv "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUEUTF16.txt" "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt"

Par cela
Bloc de code:
####### inscription dans /RESULTATSHISTORIQUE.txt gain SANS multiplicateur  #######
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
cat /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE_UTF8.txt >> /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp
head -100 /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp > /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE_UTF8.txt
rm -f /Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt-tmp

#converti l'encodage format UTF-8 en UTF-16 afin affiché le symbole "€" et "★" (puis renomme RESULTATSHISTORIQUEUTF16.txt en RESULTATSHISTORIQUE.txt)
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE_UTF8.txt" > "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE_UTF16.txt"
mv "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE_UTF16.txt" "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt"
 
Le fichier RSULTATSTATS.txt etant généré a partir de ca :

Bloc de code:
############################################################################################
####  SORTIE DES STATS VERS FICHIER TEXTE (nombre de tirages gagnants triés decroissant + etoiles) #####
############################################################################################

# creation d'un fichier vide RESULTATSTATS.txt
# > /Users/xxx/Desktop/KENODATA/RESULTATSTATS.txt

#v2
# Donne :
#MAGNETICO   34 €
#ELSIE   34 €
#MICROSEB   14 €
awk '{
  split($0,ligne," : ")
  #$0 = VENDREDI 06 JUILLET 2018 - SOIR : MAGNETICO : X1 [5/6]▶ 30 € X1 -------- ★★ 30 € ★★
  #ligne[1] = VENDREDI 06 JUILLET 2018 - SOIR
  #ligne[2] = MAGNETICO
  #ligne[3] = X1 [5/6]▶ 30 € X1 -------- ★★ 30 € ★★

  joueur=ligne[2]

  #Pour ne garder que le 30 dans la partie : ★★ 30 € ★★
  gain_start=index(ligne[3],"★★")+7
  gain_end=index(ligne[3]," € ★★")
  gain=substr(ligne[3],gain_start,gain_end-gain_start)

  #Tableau contenant les gains par joueur
  tableau[joueur]=tableau[joueur]+gain
}
END {
  for (joueur in tableau)
  {
    printf "%s:%s\n",joueur,tableau[joueur]
  }
}' RESULTATSHISTORIQUE.txt | sort -t':' -k2 -nr | grep -v "PAS DE GAGNANT pour ce tirage" | sed "s/^\(.*\):\(.*\)$/\1 > \2 €  /" > /Users/xxx/Desktop/KENODATA/RESULTATSTATS.txt

### -------------------------------------------------------------------------------------------------------------------------------------------------


MAJ : je crois avoir vu

RESULTATSHISTORIQUE.txt -> RESULTATSHISTORIQUE_UTF8.txt


Je vais voir avec les prochains tirages si tout est OK.
Merci X 100
 
Dernière édition:
C'est ça, le RESULTATSHISTORIQUE_UTF8 contient tes données avant la conversion et est à conserver. C'est lui qui sera mis à jour.
Le RESULTATSHISTORIQUE_UTF16 lui est la conversion en UTF16 du précédant, il sera utilisé uniquement pour l'affichage sur ton forum.

D'ailleurs tu peux remplacer :
Bloc de code:
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE_UTF8.txt" > "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE_UTF16.txt"
mv "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE_UTF16.txt" "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt"

Par :
Bloc de code:
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE_UTF8.txt" > "/Users/xxx/Desktop/KENODATA/RESULTATSHISTORIQUE.txt"

:)
 
Voici le log quand ca upload sur mon serveur FTP


Bloc de code:
                                 Dload  Upload   Total   Spent    Left  Speed
100  137k    0     0  100  137k      0  1155k --:--:-- --:--:-- --:--:-- 1156k
curl: (21) QUOT command failed with 550
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   734    0     0  100   734      0   6631 --:--:-- --:--:-- --:--:--  6672
curl: (21) QUOT command failed with 550
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    72    0     0  100    72      0    667 --:--:-- --:--:-- --:--:--   672
curl: (21) QUOT command failed with 550
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   186    0     0  100   186      0   1727 --:--:-- --:--:-- --:--:--  1738
curl: (21) QUOT command failed with 550
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    36    0     0  100    36      0    327 --:--:-- --:--:-- --:--:--   330
curl: (21) QUOT command failed with 550
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   186    0     0  100   186      0   1639 --:--:-- --:--:-- --:--:--  1646
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1808    0     0  100  1808      0   1686  0:00:01  0:00:01 --:--:--  1688
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1808    0     0  100  1808      0   2127 --:--:-- --:--:-- --:--:--  2127
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1808    0     0  100  1808      0   2338 --:--:-- --:--:-- --:--:--  2338


Les fichiers sont bien envoyés, mais a quoi corresponds cette erreur ?
curl: (21) QUOT command failed with 550