ho variabile, ad esempio "1,2,3,4"conteggio delle parole specifiche in linea in bash
voglio contare di virgole in questo testo in bash
qualche idea? Linee
grazie per aiuto
ho variabile, ad esempio "1,2,3,4"conteggio delle parole specifiche in linea in bash
voglio contare di virgole in questo testo in bash
qualche idea? Linee
grazie per aiuto
questo farà ciò che si vuole:
echo "1,2,3" | tr -cd ',' | wc -c
Isolare le virgole per linea, contare:
echo "$VAR"|grep -o ,|wc -l
Fuori della parte superiore della mia testa usando bash pura:
var="1,2,3,4"
temp=${var//[^,]/}
echo ${#temp}
Cambia la seconda riga in: 'temp = $ {var // [^,] /}' poi rimuove qualsiasi non-virgola. –
Buona chiamata, grazie per il promemoria – SiegeX
Una soluzione puramente bash senza programmi esterni:
$ X=1,2,3,4
$ count=$(($(IFS=,; set -- $X; echo $#) - 1))
$ echo $count
3
$
Nota: Questo distrugge i parametri posizionali.
L'eval e apici non sono necessari. –
@Dennis: Ok. Mi sono sbarazzato di loro. – camh
Un'altra soluzione Bash pura:
var="bbb,1,2,3,4,a,b,qwerty,,,"
saveIFS="$IFS"
IFS=','
var=($var)x
IFS="$saveIFS"
echo $((${#var[@]} - 1))
uscita volontà "10" con la stringa indicata.
Non funziona con 'var =" 1,2,3 "' (sembra funzionare solo se esiste una virgola finale). –
@Alok: Grazie per la segnalazione. Ora è risolto. Mi piace la versione ** di ** SiegeX **, comunque. –
molto semplice con awk
$ echo 1,2,3,4 | awk -F"," '{print NF-1}'
3
con solo il guscio
$ s="1,2,3,4"
$ IFS=","
$ set -- $s
$ echo $(($#-1))
3
echo '1,2,3' | grep -o ',' | wc -l
grazie esattamente quello che voglio;) – soField
non sapeva che l'utilizzo tr -c, bello –
realtà tr -cd sta facendo bene questo lavoro :) – soField