[risolto] spezzare stringa in bash
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- sya54M
- Master
- Messaggi: 1665
- Iscritto il: mer 6 giu 2007, 14:44
- Nome Cognome: Andrea Peluso
- Slackware: 64-current
- Kernel: ultimo
- Desktop: KDE
- Località: (Salerno)
- Contatta:
[risolto] spezzare stringa in bash
Ciao a tutti, spiego la situazione: ho una stringa in una variabile bash che può arrivare fino a 140 caratteri, e dovrei spezzarla massimo ogni 40 caratteri quando incontro il whitespace, quindi da una stringa ne devo ottenere fino a un massimo di 4, magari dentro un array... chi mi sa aiutare?
grazie!
grazie!
Ultima modifica di sya54M il sab 21 gen 2017, 14:06, modificato 1 volta in totale.
- targzeta
- Iper Master
- Messaggi: 6631
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: spezzare stringa in bash
Se la stringa va spezzata ad ogni whitespace basta un semplice:
Esempio:
Emanuele
Codice: Seleziona tutto
array=($stringa)
Codice: Seleziona tutto
$> stringa="ciao mamma guarda come mi diverto"
$> array=($stringa)
$> set | grep -E 'stringa|array'
stringa='ciao mamma guarda come mi diverto'
array=([0]="ciao" [1]="mamma" [2]="guarda" [3]="come" [4]="mi" [5]="diverto")
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- sya54M
- Master
- Messaggi: 1665
- Iscritto il: mer 6 giu 2007, 14:44
- Nome Cognome: Andrea Peluso
- Slackware: 64-current
- Kernel: ultimo
- Desktop: KDE
- Località: (Salerno)
- Contatta:
Re: spezzare stringa in bash
ciao emanuele, no, non ad ogni whitespace, ma all'ultimo whitespace entro i 40 caratteri. se per esempio la stringa è:
dovrò ottenere un array così:
però la stringa iniziale può essere anche più breve, massimo 140 caratteri, quindi la dimensione dell'array non si sa, si sa solo che può essere massimo 4
Codice: Seleziona tutto
stringa="ciao mamma guarda come mi diverto ciao mamma guarda come mi diverto ciao mamma guarda come mi diverto ciao mamma guarda come mi diverto"
Codice: Seleziona tutto
array=([0]="ciao mamma guarda come mi diverto ciao" [1]="mamma guarda come mi diverto ciao mamma" [2]="guarda come mi diverto ciao mamma guarda" [3]="come mi diverto")
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: spezzare stringa in bash
Se ho capit
echo "$string" | fold -s -w40
echo "$string" | fold -s -w40
- sya54M
- Master
- Messaggi: 1665
- Iscritto il: mer 6 giu 2007, 14:44
- Nome Cognome: Andrea Peluso
- Slackware: 64-current
- Kernel: ultimo
- Desktop: KDE
- Località: (Salerno)
- Contatta:
Re: spezzare stringa in bash
grande come sempre conraid!
io avevo risolto in questo modo:
ma con fold è molto più semplice
io avevo risolto in questo modo:
Codice: Seleziona tutto
frase1array=($(echo $frase1))
i=0
str1=""
while [ ${#str1} -le 35 ]; do
str1="$str1 ${frase1array[$i]}"
let i=i+1
done
str2=""
while [ ${#str2} -le 35 ]; do
str2="$str2 ${frase1array[$i]}"
let i=i+1
done
str3=""
while [ ${#str3} -le 35 ]; do
str3="$str3 ${frase1array[$i]}"
let i=i+1
done
str4=""
while [ ${#str4} -le 35 ]; do
str4="$str4 ${frase1array[$i]}"
let i=i+1
done
- sya54M
- Master
- Messaggi: 1665
- Iscritto il: mer 6 giu 2007, 14:44
- Nome Cognome: Andrea Peluso
- Slackware: 64-current
- Kernel: ultimo
- Desktop: KDE
- Località: (Salerno)
- Contatta:
Re: spezzare stringa in bash
ora ho fatto così:
molto più semplice grazie a conraid
Codice: Seleziona tutto
frase1array=($(echo $frase1 |fold -s -w40 |tr " " " "))
str1="$(echo ${frase1array[0]} |tr " " " ")"
str2="$(echo ${frase1array[1]} |tr " " " ")"
str3="$(echo ${frase1array[2]} |tr " " " ")"
str4="$(echo ${frase1array[3]} |tr " " " ")"