Compte le nombre de caractères ds 1 variable ? [bash] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 25-04-2005 à 18:30:58
${#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.
Marsh Posté le 25-04-2005 à 23:21:56
matafan a écrit : ${#var} est le nombre de caracteres dans var : http://www.gnu.org/software/bash/m [...] html#SEC29 |
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"
Marsh Posté le 26-04-2005 à 14:33:31
if echo $var | grep -Eq '^[[:alnum:]]{8}$' |
A part ça je ne vois pas trop.
Marsh Posté le 26-04-2005 à 23:30:01
Salut,
Ca ne devrait pas être {0,8} ? Pour permettre moins de 8 caractères, si j'ai bien compris ?
Marsh Posté le 26-04-2005 à 23:48:05
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 ?
Marsh Posté le 27-04-2005 à 05:26:17
IrmatDen a écrit : Salut, |
Oui en effet, j'ai mal lu ce qu'il demandait.
weed a écrit : je ne sais pas si c'est normal mais : |
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.
Marsh Posté le 27-04-2005 à 22:11:33
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 |
si je fais ca
Code :
|
cela n'affiche toujours, rien, c'est normal puisque c'est faut. Mais alors pourquoi cela renvoie toujours pas ok ?
Marsh Posté le 25-04-2005 à 00:20:27
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 ?