Ho una stringa che assomiglia a questo:stringa di ottenere dopo carattere
GenFiltEff=7.092200e-01
Utilizzando bash, vorrei solo ottenere il numero dopo il carattere =
. C'è un modo per fare questo?
Ho una stringa che assomiglia a questo:stringa di ottenere dopo carattere
GenFiltEff=7.092200e-01
Utilizzando bash, vorrei solo ottenere il numero dopo il carattere =
. C'è un modo per fare questo?
cut -d "=" -f 2 <<< "$your_str"
o
sed -e 's#.*=\(\)#\1#' <<< "$your_str"
Questo dovrebbe funzionare:
your_str='GenFiltEff=7.092200e-01'
echo $your_str | cut -d "=" -f2
${word:$(expr index "$word" "="):1}
che ottiene il 7
. Supponendo che intendi l'intero resto della stringa, basta lasciare il :1
.
echo "GenFiltEff=7.092200e-01" | cut -d "=" -f2
Utilizzare l'espansione dei parametri, se il valore è già memorizzato in una variabile.
$ str="GenFiltEff=7.092200e-01"
$ value=${str#*=}
Oppure utilizzare read
$ IFS="=" read name value <<< "GenFiltEff=7.092200e-01"
In entrambi i casi,
$ echo $value
7.092200e-01
Se la stringa ha più di un "=": '$ {str ## * =} per ottenere dall'ultima partita. $ {str # * =} per ottenere dalla prima partita. $ {str %% = *} per ottenere fino alla prima partita. $ {str% = *} fino all'ultima partita. [Manipolazione delle stringhe @ tldp.org] (http://tldp.org/LDP/abs/html/string-manipulation.html) – lepe
Non ho ricevuto la seconda soluzione funzionante: '$ IFS =" = "valore nome lettura <<<" GenFiltEff = 7.092200e-01 "' utilizzando bash 4.4.5 – sn1ckers
Funziona bene per me in 4.4.5. Se non riesci a capire il problema, ti preghiamo di aprire una nuova domanda che includa il risultato che * fai * ottieni. – chepner
Per i casi semplici, ma questi metodi non giocare bene quando non v'è più di un "=" nel stringa. La prima soluzione di Chepner è semplice e più affidabile. – lepe
Qual è il modo più grasso per farlo? tagliato, sedato o altro? – Fabich