J'ai une variable telle que "1,2,3,4" p>
Je veux compter des virgules dans ce texte dans Bash P>
aucune idée? p>
merci pour l'aide p>
7 Réponses :
Isoler des virgules par ligne, des lignes de comptage:
Cela fera ce que vous voulez:
echo "1,2,3" | tr -cd ',' | wc -c
Ne savait pas de cette utilisation tr -c, agréable
En fait, TR -CD fait bien ce travail :)
éteint le dessus de ma tête en utilisant puure bash:
Modifiez la deuxième ligne à: temp = $ {var // [^,] /} code> alors il supprime toute non-virgule.
une solution purement bash sans programmes externes: Remarque: cela détruit vos paramètres de position. P> P>
Les devis Eval et Single sont inutiles.
@Dennis: OK. Je me suis débarrassé d'eux.
Une autre solution pure bash:
var="bbb,1,2,3,4,a,b,qwerty,,,"
saveIFS="$IFS"
IFS=','
var=($var)x
IFS="$saveIFS"
echo $((${#var[@]} - 1))
Ne fonctionne pas avec var = "1,2,3" code> (semble fonctionner uniquement s'il y a une virgule de fuite).
@Alok: Merci d'avoir souligné cela. C'est maintenant corrigé. J'aime mieux Siegex's B> Mieux cependant.
Très simplement avec AWK
$ s="1,2,3,4" $ IFS="," $ set -- $s $ echo $(($#-1)) 3
echo '1,2,3' | grep -o ',' | wc -l