Extraindo a segunda palavra de uma variável de string

6

Eu tenho uma string "rtcpOnNbActive true" armazenada em uma variável x . Eu quero extrair "true" como substring e armazenar em uma variável. Como posso fazer isso?

    
por Pratibha Jain 13.12.2014 / 09:07

5 respostas

9

Supondo que haja pelo menos um espaço antes da subseqüência que você deseja extrair (e que a subseqüência não contém espaços), você pode fazer isso com uma simples expansão de parâmetro:

x="rtcpOnNbActive     true"
y="${x##* }"
echo "[$y]"

saída

[true]
    
por 13.12.2014 / 09:34
8

Tente desta maneira:

y=$(echo $x | awk '{print $2}')
echo $y
  • echo $x exibe o valor de x .
  • awk '{print $2}' imprime o segundo campo do x exibido anteriormente.
  • $( ... ) mantém a saída e atribui-a a y .
por 13.12.2014 / 09:22
2

você pode usar o awk:

echo "rtcpOnNbActive         true" | awk '{print $NF}'
true

NF número de campos no registro atual

usando sed:

echo "rtcpOnNbActive         true" | sed 's/.* //g'
true

usando expressão de string:

 a="rtcpOnNbActive         true"
 echo ${a##* }
 true

usando o grep:

 echo "rtcpOnNbActive         true" | grep -Eo "[a-z]+$"
 true

-o é apenas correspondência exata, [a-z]+ corresponderá à letra de a-z e $ significa ao final

    
por 13.12.2014 / 10:59
2

Você pode usar o read incorporado

read -r _ y <<<"$x"
printf "%s\n" "$y"
true
    
por 14.12.2014 / 02:39
2

É possível usar matrizes bash para isso, por exemplo:

arr="(first second third)"
echo ${arr[1]}
    
por 16.10.2015 / 17:08