Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1703 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [bash] Compte le nombre de caractères ds 1 variable ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[bash] Compte le nombre de caractères ds 1 variable ?

n°667753
weed
Posté le 25-04-2005 à 00:20:27  profilanswer
 

voilou tout est dans le titre, comment compter le nombre de caractères dans une variable ?
vous allez me dire qu'il y a wc -c  
 
echo $var | wc -c, mais n'y aurait il pas une autre manière de le faire, par exemple avec sed ?
 
De plus, comment faire une recherche de caracères dans une chaine de caracères ?
 
je sais qu'en bidouillant avec grep, on peut faire ca  
 
echo $var | grep -cn "#", mais n'y aurait il pas moyen de le faire plus elegemment ?

mood
Publicité
Posté le 25-04-2005 à 00:20:27  profilanswer
 

n°668034
matafan
Posté le 25-04-2005 à 18:30:58  profilanswer
 

${#var} est le nombre de caracteres dans var : http://www.gnu.org/software/bash/m [...] html#SEC29
 
Pour ton autre question c'est difficile de repondre si on ne sait pas ce que tu cherches a faire, mais ${parameter#word} ou ${parameter%word} ou ${parameter/pattern/string} (ou leurs variantes ##, %% et //) font surement ce que tu veux.


Message édité par matafan le 25-04-2005 à 18:33:12
n°668160
weed
Posté le 25-04-2005 à 23:21:56  profilanswer
 

matafan a écrit :

${#var} est le nombre de caracteres dans var : http://www.gnu.org/software/bash/m [...] html#SEC29
 
Pour ton autre question c'est difficile de repondre si on ne sait pas ce que tu cherches a faire, mais ${parameter#word} ou ${parameter%word} ou ${parameter/pattern/string} (ou leurs variantes ##, %% et //) font surement ce que tu veux.


 
 
merci pour {#var}, c'est exactement ca que je cherchais  
 
sinon pour les autres propositions, je me suis rensigné, j'ai d'ailleurs trouvés des exemples car les explications sont imbitables :
http://www.zone-h.org/files/48/bash.txt
 
les expressions regulières que tu me proposes permet de cherches des sous chaines à partir d'une chaine ou de remplacer une sous chaine d'une chaine par une autre sous chaine ...
 
Bref , j'ai bien compris mais cela ne repond pas à ma question ...
je me reexplique alors  
 
Comment fait t'on pour controler que la chaine de caractères ne contient que des caracères alphanumériques et ne contiennent pas plus de 8 caractères ?
 
exemple p="tototi"

n°668404
matafan
Posté le 26-04-2005 à 14:33:31  profilanswer
 

if echo $var | grep -Eq '^[[:alnum:]]{8}$'
then
    ...
fi


A part ça je ne vois pas trop.


Message édité par matafan le 26-04-2005 à 14:34:30
n°668667
IrmatDen
Posté le 26-04-2005 à 23:30:01  profilanswer
 

Salut,
Ca ne devrait pas être {0,8} ? Pour permettre moins de 8 caractères, si j'ai bien compris ?

n°668675
weed
Posté le 26-04-2005 à 23:48:05  profilanswer
 

je ne sais pas si c'est normal mais :
echo "totto" | grep -qE "^[[:alnum:]]{0.8}$", n'affiche rien
 
et  echo "tot#to" | grep -qE "^[[:alnum:]]{0.8}$", n'affche rien non plus  
 
matafan, dans ton if tu fais un test sur quoi, normallement il n'y a pas 2 argument, non ?  
 

n°668676
weed
Posté le 26-04-2005 à 23:48:29  profilanswer
 

IrmatDen, tu as peut etre raison en effet ...

n°668717
matafan
Posté le 27-04-2005 à 05:26:17  profilanswer
 

IrmatDen a écrit :

Salut,
Ca ne devrait pas être {0,8} ? Pour permettre moins de 8 caractères, si j'ai bien compris ?


Oui en effet, j'ai mal lu ce qu'il demandait.
 

weed a écrit :

je ne sais pas si c'est normal mais :
echo "totto" | grep -qE "^[[:alnum:]]{0.8}$", n'affiche rien
 
et  echo "tot#to" | grep -qE "^[[:alnum:]]{0.8}$", n'affche rien non plus


Si tu fais "man grep" tu verra que -q supprime tout affichage. grep réussit si ça match (return code 0), et échoue si ça ne match pas (return code différent de 0).
 

weed a écrit :

matafan, dans ton if tu fais un test sur quoi, normallement il n'y a pas 2 argument, non ?


Le test est sur la valeur de retour de la commande qui est après le if.


Message édité par matafan le 27-04-2005 à 05:26:54
n°669155
weed
Posté le 27-04-2005 à 22:11:33  profilanswer
 

oki je ne savais pas que l'on pouvait traiter directement de cette facon avec un if ...
 
alors explique moi pourquoi cela n'affiche pas ok quand je lance, cette commande. Ca match bien et ca affiche "pas ok". Moins de 8 caracères et tous alphanumérique.
 

if echo "totto" | grep -E "^[[:alnum:]]{0.8}$"; then echo "ok"; else echo "pas ok"; fi
fi


 
si je fais ca  
 

Code :
  1. if echo "tottojhgjhgjdddddddddddddddddhgjhgjhg" | grep -qE "^[[:alnum:]]{0.8}$"; then echo "ok"; else echo "pas ok"; fi
  2. ou
  3. if echo "tottojhgj#hg" | grep -qE "^[[:alnum:]]{0.8}$"; then echo "ok"; else echo "pas ok"; fi


 
 
cela n'affiche toujours, rien, c'est normal puisque c'est faut. Mais alors pourquoi cela renvoie toujours pas ok ?

n°669190
matafan
Posté le 28-04-2005 à 00:55:07  profilanswer
 

Parce que c'est "{0,8}" et pas "{0.8}".

mood
Publicité
Posté le 28-04-2005 à 00:55:07  profilanswer
 

n°669195
weed
Posté le 28-04-2005 à 01:08:19  profilanswer
 

et bien bravo. Cela fonctionne merci.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [bash] Compte le nombre de caractères ds 1 variable ?

 

Sujets relatifs
Les polices de caracteresvariable environnement mysql ? pb charset
Nombre de caractere clé WEPComment peut on recuperer les resultat d'une cmde dans des variable ?
[bash] activer l'auto completion apres sudonombre de packets recus
Taille sur le disque en bash[ooo] pas de caractères accentués dans les menus
Nombre de connexion simultané avec SAMBAProFTPD : probleme avec le compte anonyme
Plus de sujets relatifs à : [bash] Compte le nombre de caractères ds 1 variable ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR