Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/01/2018, à 14:37

Bob36180

Création d'exécutable

Bonjour !!

J'ai suivi une méthode pour pouvoir créer un fichier exécutable .sh afin de faire sortir des variantes de nombres  à partir d'un modèle initial en format .txt...

Je l'ai appelé copy.sh et ai recopié texto les codes sous Vim.

Voilà le résultat final :

#!/bin/bash

LONG="$(head -n 1 $1 | wc -c)"

while true
do
	for i in $(seq 1 $LONG)
	do
		cut -c $i < $1 | shuf | tail -n 1
	done | tr -d "\n"
	echo
done | sed -u '/[[:digit:]][[:digit:]][[:digit:]][[:digit:]] */d; /[[:alpha:]]*/!d' | head -n $2

exit 0

Sauf que de retour sur mon terminal, en voulant amorcer l'algorithme avec mon fichier .txt :

copy.sh /Bureau/textebase.txt 1000

je trouve cette erreur :

sed: -e expression n°1, caractère 61: échec du pairage de [ ou de [^

Des idées ??
Merci d'avance !!


La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#2 Le 19/01/2018, à 15:06

pingouinux

Re : Création d'exécutable

Bonjour,
Je n'arrive pas à reproduire l'erreur.

Quelques remarques :
- Je ne vois pas de sortie dans la boucle while true
- Prends l'habitude de mettre des " " autour de $1, $2
- N'est-ce pas plutôt ~//Bureau/textebase.txt (à la place de /Bureau/textebase.txt) ?

Donne éventuellement un petit exemple de fichier, et indique ce que tu essayes de faire, car ton script me paraît inutilement compliqué.

Hors ligne

#3 Le 19/01/2018, à 16:55

Bob36180

Re : Création d'exécutable

petites corrections, donc wink

$ ./copy.sh textebase.txt 1000

En fait mon copy.sh est sur le bureau, donc pas besoin de préciser l'option. Mais toujours pas de résultat fonctionnant...

sed: -e expression n°1, caractère 61- échec du pairage de [ ou de [^

Le contenu de mon textebase.txt :

31D672F9C5F747AC3A
5A647E672E3E54CF26

Ça devrait lancer l'algorithme et il sortirait des combinaisons de ces chiffres normalement...


La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#4 Le 19/01/2018, à 17:36

Bob36180

Re : Création d'exécutable

Je me permets de reposter pour montrer à quoi cela ressemblerait normalement...

En fait, j'ai supprimé toute la ligne du "sed" et ai refait ma manip'... Ça ressemble à ça :

xxx@xxx-E202SA:~/Bureau$ ./copy.sh textebase.txt 1000
6D9A571BF9C31C9165C13034B2
FDD4771B4F61EA976707346312
FE2277114F62FFB71AD23C64BE
6D2A71117961EC9ADACA3C6CFD
6D9457152863FACAA51A3C343D
FDDA715BF9C3FC4AA5171CE43E
6E94555548621591150140E4BE
6B22C7FB4962ECB0A5073CE43D
63AAA75B297125BA1AD24CE41E
FE92A115286C2FC0DA123DE43E
FDD4A5114873FF9ADACA3D3CBD
6B23C75BF97CEF401BC1306C32
FB2455114962EC9715113D33BE
63AA57112861FFB0A5C73CE3FD
FB235555F96C2FC0A5CA34643D
6B2AA7552F63EF40DA174C63F2
6E92515B4F6C2C91A7C24464FD
F3D3C75129CCECB7D5D71D63FE
6E9A771528C2FC47A5D73C34FE
^C

Et normalement on a toujours le même nombre de caractères qui réapparaissent, mais quand j'ajoute des lignes en plus dans "textebase.txt", au bout d'un moment, il sort des résultats irréguliers comme ça :

xxx@xxx-E202SA:~/Bureau$ ./copy.sh textebase.txt 1000
B3A519610ADDDC32
69FA518CC24A7021E3E
662AF19632C907D33F2
5AFA751282E5C06A36D
65AD7F17FCC20C4BA3DCB
6AFD5CF4C56A8164BD
5DF1BF420E7183D34
6B22C5F862A7183E
FDD3C7B91E0CC0A46D
B9D7C4E11407D7DC3
35AFAA11962F4DB034E
^C

Peut-être que la ligne de "sed" servait à sortir des lignes à nombres de caractères réguliers et non aléatoires ?


La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#5 Le 19/01/2018, à 18:56

pingouinux

Re : Création d'exécutable

Tu as bien une boucle infinie, dont tu ne sors qu'avec le head à la fin.

La première partie du sed supprime toutes les lignes contenant 4 chiffres consécutifs.
La second partie ne sert à rien : suppression des lignes ne contenant pas 0 ou plus caractères alphabétiques consécutifs.

Je vais essayer de simplifier ça.

Ajouté :
Essaye ceci

#!/bin/bash

LONG="$(head -n 1 "$1" | wc -c)"

while true
do
        for i in $(seq 1 $((LONG-1)))
        do
           shuf -n1 "$1" | cut -c $i
        done | tr -d "\n"
        echo
done | sed -ru '/[[:digit:]]{4} */d' | head -n "$2"

exit 0

Dernière modification par pingouinux (Le 19/01/2018, à 19:10)

Hors ligne

#6 Le 19/01/2018, à 19:23

Watael

Re : Création d'exécutable

read long < "$1"
long=$((${#long}-1))

attention, aux noms de variables tout en majuscules !

et il y a de nombreuses commandes externes que bash peut remplacer.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 19/01/2018, à 20:18

Bob36180

Re : Création d'exécutable

Majuscules changées, script réécrit, mais la même sortie aléatoire :

xxx@xxx-E202SA:~/Bureau$ ./copy.sh textebase.txt 1000
65A34BAFECC205A799E93C3D
7ECF5EA1EF6C4ECCE71F24BCCD
4D26D1FAF6E5E52A0AC6CB
31AA1BFBF831EA45DC24E63E
2C01C949CCA644A59F31D17
FDA4AFACD4E17C68B05EF449
EF4FC2F82DF4A48B91B7BEBE
F723CB1A442D5EA63B7F86CEF9
639FA5F1F97E174CCA4F406C6
7ECF5E1A9AEA7C36BC710EF3E
A6CFC72E26AC2ACF2A2F2EB32E
DA23E2A412EEEC1ADEDDB2
FBCEAE6E546D9A9ECE2F4CF2BD
66AE29D7E35AC1A91FAEBCBE
CCA43DBE5AE5E439E9A9EF
^C

Dernière modification par Bob36180 (Le 19/01/2018, à 20:18)


La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#8 Le 19/01/2018, à 20:31

Watael

Re : Création d'exécutable

problème d'encodage de fichier ? fichier provenant d'une machine sous W$ ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 19/01/2018, à 20:42

Bob36180

Re : Création d'exécutable

Je ne sais pas, mais en tout cas il a été fait et édité sous Ubuntu si c'est la question...

Je ne sais pas si il existerait un script pour que les lignes sortent toutes le même nombre de caractères...


La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#10 Le 19/01/2018, à 20:53

Bob36180

Re : Création d'exécutable

xxx@xxx-E202SA:~/Bureau$ ./copy.sh textebase.txt 1000
FBA157E2C47E42B33B21B462F7
674AD7C1F831E5AFE5C11CEEB2
738CA1F1EE69EE44D9DCE642FD
6ECF7A17C7C954CC377F40EC6D
37D2E1F27F7EBABF3C3F34FE11
AE334EEB792E9C44C67F709C29
5BCAD7E22D5E554F3A7A1D933D
7A26C7F9ECAD3F4AAB496FDCFE
FB4FA12E3E6E5CED6DE57D1C4C
A754DECB2E7E1FB631D97CC367
732C1B257C5E5ACF37D16CECBD
77C141FECC33EACEACD1B7E3BE
DE63D21EC941FC43A91F4C9FDE
FB221FA9C52EBA413DDF44E4CD
F36C711ACD3EACAA2A311F7DCE
6ED2AB1A483C52C5A1D7EF734E
7BAF071E29CC9ECFDA416D633C
^C

J'ai enfin réussi, mais il a fallu que j'entre une à une et manuellement mes 16 codes de base dans "textebase.txt" tout en lançant copy.sh à chaque fois que je rajoutais UNE ligne... si j'en ajoute deux en même temps, la commande foire et je me retrouve avec mon problème initial d'irrégularité... curieux non ??


La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#11 Le 19/01/2018, à 20:55

pingouinux

Re : Création d'exécutable

Les lignes du fichier de départ ont-elles toutes la même longueur ?
Quel est le retour de

file textebase.txt

Montre ton script dans son état actuel.

Hors ligne

#12 Le 19/01/2018, à 21:06

Bob36180

Re : Création d'exécutable

Voilàvoilà :

#!/bin/bash

long="$(head -n 1 "$1" | wc -c)"

while true
do
        for i in $(seq 1 $((long-1)))
        do
                shuf -n1 "$1" | cut -c $i
        done | tr -d "\n"
        echo
done | sed -ru '/[[:digit:]]{4} */d' | head -n "$2"


exit 0

~                                                                               
~                                                                               
~                                                                               
~                                                                               
~  

Ainsi que :

xxx@xxx-E202SA:~/Bureau$ file textebase.txt
textebase.txt: ASCII text

La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#13 Le 19/01/2018, à 21:19

pingouinux

Re : Création d'exécutable

Bob36180 #10 a écrit :

J'ai enfin réussi, mais il a fallu que j'entre une à une et manuellement mes 16 codes de base dans "textebase.txt" tout en lançant copy.sh à chaque fois que je rajoutais UNE ligne... si j'en ajoute deux en même temps, la commande foire et je me retrouve avec mon problème initial d'irrégularité...

Je ne comprends pas ce que tu veux dire. Tu ne modifies quand même pas textebase.txt pendant que ton script tourne ?

Hors ligne

#14 Le 19/01/2018, à 21:25

Bob36180

Re : Création d'exécutable

Non, en fait dans l'ordre, je fais ça :
1. J'ouvre et tape une seule nouvelle ligne dans textebase.txt
2. J'enregistre le fichier
3. Je lance mon copy.sh avec textebase.txt comprenant donc la nouvelle ligne
4. J'arrête la commande et je reproduis la même chose en rajoutant une seule nouvelle ligne jusqu'à avoir mis les 16.


La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#15 Le 19/01/2018, à 21:30

pingouinux

Re : Création d'exécutable

Je ne vois pas comment le résultat peut dépendre de la façon dont tu remplis ton fichier. Il doit y avoir autre chose.

Hors ligne

#16 Le 19/01/2018, à 22:27

Bob36180

Re : Création d'exécutable

Oui, je pense, mais bon tant que ça marche... wink


La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#17 Le 20/01/2018, à 10:15

kholo

Re : Création d'exécutable

salut,
si tu mets un saut de ligne à la fin de ton fichier textebase.txt
ça reproduit ton problème de longueur de ligne :

5A5B3BCB764DAF4C2A
F737EE77E7EE2FF7
47D7BCEFD19C623
A16C1F77C2E17AF33
4E471BCFE99BC37
4E243EF92C4E9CC424
313C7E647E3E9C43
DCDBCB8E9DACF56
4A6B745BCEDACC45A

en le retirant, plus de soucis

A16BFEEB264E944A23
FED644CB29FE5CCA31
3E614ECB753E47AFC6
AA6C7E67C5FEE84A2A
A1D435EB2D3D542A54
5A647E67CD9E1CAF36
5A597EFB7E31A94AFA
AA5C4EE97E3D974C27
5EDB7B27C57D1F465A
AA647BCB293E174A54
A364F5C7CD3E1C265A

Hors ligne

#18 Le 20/01/2018, à 10:39

Bob36180

Re : Création d'exécutable

Non, toujours la même...

xxx@xxx-E202SA:~/Bureau$ ./copy.sh textebase.txt 1000
7B2F521FE32EEDE764BE
7AAA522E40ACA344E
7DBF576AE7D243DE
A0B21E461FA9A704CE
FED0A5F6C2A49CA88E4DE
FB6AD1BE962FEA0A3DFD
7D817F97F72BE9AA798BDD41E
6C1CBC4DA78DD4B
^C

Mon nouveau script :

#!/bin/bash

long="$(head -n 1 "$1" | wc -c)"

while true
do
        for i in $(seq 1 $((long-1)))
        do
                shuf -n1 "$1" | cut -c $i
        done | tr -d "\n"
        echo
done | sed -ru '/[[:digit:]]{4} */d' | head -n "$2"
exit 0

La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#19 Le 20/01/2018, à 10:42

pingouinux

Re : Création d'exécutable

kholo #17 a écrit :

si tu mets un saut de ligne à la fin de ton fichier textebase.txt
ça reproduit ton problème de longueur de ligne :
......................................
en le retirant, plus de soucis

Bien vu, kholo ! Le script pioche aléatoirement des caractères dans chaque ligne du fichier, et il ne trouve rien dans les lignes vides. Plus la proportion de lignes vides dans le fichier de données est grande, plus on aura de lignes courtes en sortie.

Hors ligne

#20 Le 20/01/2018, à 10:46

pingouinux

Re : Création d'exécutable

@Bob36180 :
Si ce ne sont pas des lignes vides, ce sont peut-être des espaces qui traînent en fin de ligne.
Montre le retour de

hd textebase.txt

Hors ligne

#21 Le 20/01/2018, à 10:57

Bob36180

Re : Création d'exécutable

Ah oui bien vu ! Voilà le retour :

xxx@xxx-E202SA:~/Bureau$ hd textebase.txt
00000000  36 33 39 41 37 37 35 31  46 39 37 43 31 35 43 41  |639A7751F97C15CA|
00000010  44 35 43 41 33 44 36 34  46 32 0a 46 44 44 34 43  |D5CA3D64F2.FDD4C|
00000020  35 31 35 37 46 43 33 45  46 42 30 36 37 30 32 33  |5157FC3EFB067023|
00000030  34 45 33 42 45 0a 36 45  32 32 41 37 31 31 32 39  |4E3BE.6E22A71129|
00000040  36 31 32 43 34 31 41 41  31 31 34 43 36 43 33 44  |612C41AA114C6C3D|
00000050  0a 46 42 41 33 35 31 46  42 34 38 36 32 46 41 39  |.FBA351FB4862FA9|
00000060  37 31 42 44 37 31 30 33  34 31 45 0a 33 35 36 46  |71BD710341E.356F|
00000070  44 41 43 45 45 34 45 43  39 30 45 34 43 37 39 38  |DACEE4EC90E4C798|
00000080  42 39 44 46 44 45 0a 37  33 38 31 30 42 32 39 38  |B9DFDE.73810B298|
00000090  38 32 30 42 45 35 39 41  45 32 37 38 31 43 44 42  |820BE59AE2781CDB|
000000a0  44 0a 0a 0a                                       |D...|
000000a4

La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#22 Le 20/01/2018, à 11:12

pingouinux

Re : Création d'exécutable

Tu as 2 lignes vides en fin de fichier.

Hors ligne

#23 Le 20/01/2018, à 12:11

Bob36180

Re : Création d'exécutable

Et comment fais-je pour les supprimer ?? La fin de mon script se touche il n'y a pas d'espaces (voir #18)...


La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne

#24 Le 20/01/2018, à 12:15

pingouinux

Re : Création d'exécutable

Et comment fais-je pour les supprimer ??

Tu fais d'abord une copie de ton fichier, par prudence, puis :

sed -i '/^$/d' textebase.txt

Hors ligne

#25 Le 22/01/2018, à 19:09

Bob36180

Re : Création d'exécutable

Super ça a marché !! Merci !!

xxx@xxx-E202SA:~/Bureau$ ./copy_keys.sh textebase.txt 1000
574A5E66EC62F04E3B99A4F44A
AAC6ABCE46EE1FC41B2C36CE22
F32A41F246CCBAC7A5E196E46D
456C5F27CFCDF441AE9F3C946B
45A20BC5E4ACF6C0AB014C4C6E
7EAE7E21CC9CF5E06BD966BE4E
77C41EA72FACAF43ADDA1FBE3E
^C

La différence entre Linux et Windows, c'est que Linux c'est comme une belle fille, il faut l'apprivoiser, la comprendre, la séduire. Windows, c'est comme une prostituée, il faut payer et surtout bien se protéger...

Hors ligne