tengo variable como "1,2,3,4"cuenta de la palabra específica en la línea en bash
quiero contar de comas en este texto en bash
alguna idea? líneas
gracias por la ayuda
tengo variable como "1,2,3,4"cuenta de la palabra específica en la línea en bash
quiero contar de comas en este texto en bash
alguna idea? líneas
gracias por la ayuda
esto va a hacer lo que quiere:
echo "1,2,3" | tr -cd ',' | wc -c
Aislar comas por línea, Count:
echo "$VAR"|grep -o ,|wc -l
De la parte superior de la cabeza usando fiesta pura:
var="1,2,3,4"
temp=${var//[^,]/}
echo ${#temp}
Cambia la segunda línea a: 'temp = $ {var // [^,] /}' luego elimina cualquier cosa que no sea coma. –
Buena llamada, gracias por el recordatorio – SiegeX
Una solución puramente fiesta sin programas externos:
$ X=1,2,3,4
$ count=$(($(IFS=,; set -- $X; echo $#) - 1))
$ echo $count
3
$
Nota: Esto destruye sus parámetros posicionales.
La evaluación y las comillas simples son innecesarias. –
@Dennis: Ok. Me deshice de ellos. – camh
Otra solución pura Bash:
var="bbb,1,2,3,4,a,b,qwerty,,,"
saveIFS="$IFS"
IFS=','
var=($var)x
IFS="$saveIFS"
echo $((${#var[@]} - 1))
es la salida "10" a la cadena se muestra.
No funciona con 'var =" 1,2,3 "' (parece funcionar solo si hay una coma al final). –
@Alok: gracias por señalar eso. Ahora está arreglado. Sin embargo, me gusta ** la versión ** de SiegeX mejor. –
manera muy simple con awk
$ echo 1,2,3,4 | awk -F"," '{print NF-1}'
3
con sólo la cáscara
$ s="1,2,3,4"
$ IFS=","
$ set -- $s
$ echo $(($#-1))
3
echo '1,2,3' | grep -o ',' | wc -l
gracias exactamente lo que quiero;) – soField
No sabía que el uso del tr -c, agradable –
realidad tr -cd está haciendo bien este trabajo :) – soField