2012-05-25 11 views
5

Sto scrivendo uno script bash che eseguirà un comando e memorizzerà il valore in una variabile stringa, ora ho bisogno di dividere la stringa dopo determinati caratteri. C'è un modo? Non posso usare delimitatori coz il formato è un po 'come questoÈ necessario dividere una stringa in bash dopo un certo numero di caratteri

PV Name /dev/sda2 
    PV Size 10.39 GB 

Qui ho bisogno di ottenere il/dev/sda2 e 10.39 GB (se possibile, da solo basta 10.39) e scrivere in un nuovo file. Non posso usare il delimitatore perché lo spazio è all'inizio .. Non ho fatto molto script bash. C'è un modo per fare questo?

+6

Non capisco il tuo vincolo delimitatore. "Awk" {print $ 3} "non funziona? Altrimenti, che dire '$ 4' anziché' $ 3'? – mouviciel

risposta

6
echo "${var:8}" 

risuonerà il contenuto di $var partenza dal carattere 8 (base zero).

per togliere nulla a partire dal primo spazio:

data=${var:8} 
echo "${data%% *}" 
3

di ottenere solo determinati caratteri, utilizzare cut:

$ echo '1234567' | cut -c2-5 
2345 

Tuttavia, nel tuo caso awk si presenta come soluzione migliore:

$ echo ' PV Size 10.39 GB' | awk '{ print $3 }' 
10.39 

Legge il testo come spazio/separatore di rubrica ns, così dovrebbe funzionare perfettamente bene

2

si potrebbe usare cut:

$ echo "PV Name /dev/sda2" |cut -d " " -f 3 
/dev/sda2 
Problemi correlati