como obter elementos da lista no bash?

32

Aqui está uma lista:

List = "abcd 1234 jvm something"

Como obter o segundo elemento "1234" sem repetir toda a lista?

    
por SpawnST 19.03.2010 / 04:19

2 respostas

45

sem espaços entre o sinal de igual

$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234

Algumas outras maneiras, embora não sejam tão eficientes quanto o uso de internos do shell

$ echo $List | cut -d" " -f2
1234
$  echo $List | awk '{print $2}'
1234
$ echo $List | sed 's/^.[^ \t]* //;s/ .*//'
1234
$ echo $List | tr " " "\n"|sed -n '2p'
1234
    
por 19.03.2010 / 04:27
37

Apenas para suplementar a resposta do ghostdog: você também pode colocar os elementos de $List em uma matriz e acessar o elemento de lista específico a partir dali

List="abcd 1234 jvm something"
arr=($List)
echo ${arr[1]}

Observe que os índices da matriz são contados 0,1,2, ....

Isso tem a vantagem de não poluir o ambiente shell com muitas novas variáveis.

    
por 19.03.2010 / 05:03

Tags