[shell] fin de ligne
Résolu/Fermé
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
-
22 janv. 2008 à 19:50
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 23 janv. 2008 à 10:55
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 23 janv. 2008 à 10:55
A voir également:
- [shell] fin de ligne
- Partage de photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Aller à la ligne excel - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Apparaitre hors ligne instagram - Guide
5 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 janv. 2008 à 19:59
22 janv. 2008 à 19:59
Salut,
T'as pas un exemple concret (avant => après) s'il te plaît, ainsi qu'un aperçu de ton script... merci ;-))
T'as pas un exemple concret (avant => après) s'il te plaît, ainsi qu'un aperçu de ton script... merci ;-))
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
22 janv. 2008 à 20:10
22 janv. 2008 à 20:10
while read line; do
r=1
printf "\n#Input\n" >> res.pat;
tmp=$(echo $line | awk '{print substr($0,'"$r"',1)}')
while [ $r -le 106 ] ; do
tmp=$(echo $line | awk '{print substr($0,'"$r"',1)}')
case $tmp in
"=") printf "1 0 0 0 0 0 0 0 0 0 0\n" >> res.pat ;;
"A") printf "0 1 0 0 0 0 0 0 0 0 0\n" >> res.pat ;;
"a") printf "0 0 1 0 0 0 0 0 0 0 0\n" >> res.pat ;;
"B") printf "0 0 0 1 0 0 0 0 0 0 0\n" >> res.pat ;;
"b") printf "0 0 0 0 1 0 0 0 0 0 0\n" >> res.pat ;;
"C") printf "0 0 0 0 0 1 0 0 0 0 0\n" >> res.pat ;;
"c") printf "0 0 0 0 0 0 1 0 0 0 0\n" >> res.pat ;;
"D") printf "0 0 0 0 0 0 0 1 0 0 0\n" >> res.pat ;;
"d") printf "0 0 0 0 0 0 0 0 1 0 0\n" >> res.pat ;;
"E") printf "0 0 0 0 0 0 0 0 0 1 0\n" >> res.pat ;;
"e") printf "0 0 0 0 0 0 0 0 0 0 1\n" >> res.pat ;;
"\n") (et là je fais mes 0...);;
...etc...
et ce que j'obtiens, avec une phrase du type :
A=B==a==A=a=B===a=Aa==B======a===B====d===A==b=a,
c'est :
#Input
0 1 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0
et en gros, je voudrais, quelle que soit le nombre de caractere dans la phrase, avoir un format fixe :
coder chaque caractere par une serie de 0 et de 1,
et coder par onze "0" si le nombre de caractere dans la phrase est inférieur à 106, et ce jusquà obtenir 106 lignes..
C'est plus clair ??
r=1
printf "\n#Input\n" >> res.pat;
tmp=$(echo $line | awk '{print substr($0,'"$r"',1)}')
while [ $r -le 106 ] ; do
tmp=$(echo $line | awk '{print substr($0,'"$r"',1)}')
case $tmp in
"=") printf "1 0 0 0 0 0 0 0 0 0 0\n" >> res.pat ;;
"A") printf "0 1 0 0 0 0 0 0 0 0 0\n" >> res.pat ;;
"a") printf "0 0 1 0 0 0 0 0 0 0 0\n" >> res.pat ;;
"B") printf "0 0 0 1 0 0 0 0 0 0 0\n" >> res.pat ;;
"b") printf "0 0 0 0 1 0 0 0 0 0 0\n" >> res.pat ;;
"C") printf "0 0 0 0 0 1 0 0 0 0 0\n" >> res.pat ;;
"c") printf "0 0 0 0 0 0 1 0 0 0 0\n" >> res.pat ;;
"D") printf "0 0 0 0 0 0 0 1 0 0 0\n" >> res.pat ;;
"d") printf "0 0 0 0 0 0 0 0 1 0 0\n" >> res.pat ;;
"E") printf "0 0 0 0 0 0 0 0 0 1 0\n" >> res.pat ;;
"e") printf "0 0 0 0 0 0 0 0 0 0 1\n" >> res.pat ;;
"\n") (et là je fais mes 0...);;
...etc...
et ce que j'obtiens, avec une phrase du type :
A=B==a==A=a=B===a=Aa==B======a===B====d===A==b=a,
c'est :
#Input
0 1 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0
et en gros, je voudrais, quelle que soit le nombre de caractere dans la phrase, avoir un format fixe :
coder chaque caractere par une serie de 0 et de 1,
et coder par onze "0" si le nombre de caractere dans la phrase est inférieur à 106, et ce jusquà obtenir 106 lignes..
C'est plus clair ??
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 janv. 2008 à 21:38
22 janv. 2008 à 21:38
Alors, peut être y-a-t-il mieux, mais pour l'instant je te propose de substituer le saut de ligne final (\n) par un caractère quelconque (§ par exemple), et de faire ton ultime test dans la condition du "case" avec...
Dans l'exemple qui suit, j'ai raccourci la longueur de la ligne (10 caractères) et sur 2 lignes
Dans l'exemple qui suit, j'ai raccourci la longueur de la ligne (10 caractères) et sur 2 lignes
#! /bin/bash #set -xv while read line; do line=$(echo $line | tr '\n' '§') r=1 printf "\n#Input\n" >> res.pat; tmp=$(echo $line | awk '{print substr($0,'"$r"',1)}') while [ $r -le 11 ] ; do tmp=$(echo $line | awk '{print substr($0,'"$r"',1)}') case $tmp in "=") printf "1 0 0 0 0 0 0 0 0 0 0\n" >> res.pat ;; "A") printf "0 1 0 0 0 0 0 0 0 0 0\n" >> res.pat ;; "a") printf "0 0 1 0 0 0 0 0 0 0 0\n" >> res.pat ;; "B") printf "0 0 0 1 0 0 0 0 0 0 0\n" >> res.pat ;; "b") printf "0 0 0 0 1 0 0 0 0 0 0\n" >> res.pat ;; "C") printf "0 0 0 0 0 1 0 0 0 0 0\n" >> res.pat ;; "c") printf "0 0 0 0 0 0 1 0 0 0 0\n" >> res.pat ;; "D") printf "0 0 0 0 0 0 0 1 0 0 0\n" >> res.pat ;; "d") printf "0 0 0 0 0 0 0 0 1 0 0\n" >> res.pat ;; "E") printf "0 0 0 0 0 0 0 0 0 1 0\n" >> res.pat ;; "e") printf "0 0 0 0 0 0 0 0 0 0 1\n" >> res.pat ;; "§") printf "0 0 0 0 0 0 0 0 0 0 0\n" >> res.pat ;; esac r=$((r+1)) done done < <(echo -e "A=B==a==A=\n=B===Ded=A")Et si j'ai bien compris, si la ligne ne fait pas "106" caractères, finir de remplir par des "0" (11 par lignes), donc tu peux rajouter un test avec "sed" par exemple :
#! /bin/bash #set -xv while read line; do line=$(echo $line | tr '\n' '§') nbr=$(echo "$line" | wc -l) if [ "$nbr" -le "11" ] then line=$(echo "$line" | sed -e ':boucle;s/^.\{1,11\}$/&§/; t boucle') fi r=1 printf "\n#Input\n" >> res.pat; tmp=$(echo $line | awk '{print substr($0,'"$r"',1)}') while [ $r -le 11 ] ; do tmp=$(echo $line | awk '{print substr($0,'"$r"',1)}') case $tmp in "=") printf "1 0 0 0 0 0 0 0 0 0 0\n" >> res.pat ;; "A") printf "0 1 0 0 0 0 0 0 0 0 0\n" >> res.pat ;; "a") printf "0 0 1 0 0 0 0 0 0 0 0\n" >> res.pat ;; "B") printf "0 0 0 1 0 0 0 0 0 0 0\n" >> res.pat ;; "b") printf "0 0 0 0 1 0 0 0 0 0 0\n" >> res.pat ;; "C") printf "0 0 0 0 0 1 0 0 0 0 0\n" >> res.pat ;; "c") printf "0 0 0 0 0 0 1 0 0 0 0\n" >> res.pat ;; "D") printf "0 0 0 0 0 0 0 1 0 0 0\n" >> res.pat ;; "d") printf "0 0 0 0 0 0 0 0 1 0 0\n" >> res.pat ;; "E") printf "0 0 0 0 0 0 0 0 0 1 0\n" >> res.pat ;; "e") printf "0 0 0 0 0 0 0 0 0 0 1\n" >> res.pat ;; "§") printf "0 0 0 0 0 0 0 0 0 0 0\n" >> res.pat ;; esac r=$((r+1)) done done < <(echo -e "A=B==a==A=\n=B===Ded=A\nC==D")Voilà ce que me donne la sortie dans "res.pat" :
#Input 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #Input 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #Input 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;-))
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
22 janv. 2008 à 22:48
22 janv. 2008 à 22:48
ah merci bien pour ta réponse ! Je vais essayer ça ce soir !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tibofx
Messages postés
14
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
23 janvier 2008
23 janv. 2008 à 00:58
23 janv. 2008 à 00:58
Bon nickel, tout marche parfaitement, j'ai modifié quelques petites choses pour l'adapter à mon application, mais c'était exactement ce que je cherchais ! Vraiment merci ça fait plaisir de se sentir aidé, et chapeau pour tes connaissances en la matière !
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
23 janv. 2008 à 10:55
23 janv. 2008 à 10:55
De rien, mais par contre pourrais-tu poster le script dans son ensemble (si toutefois il n'y a pas d'objection) afin que ça puisse servir à d'autres éventuellement, surtout pour la solution en fonction de ta demande primaire, s'il te plaît ?
Merci d'avance ;-))
Merci d'avance ;-))