Extrai a segunda string citada em uma linha de saída

1

Eu tenho uma linha de saída com três citações, e especificamente preciso extrair a cotação segundo em uma variável. Por exemplo, com o comando cmd | grep tokens , recebo a seguinte saída:

Saída

"abcde", "12345", "zyxwv"

Eu preciso retirar 12345 de lá. O mais próximo que fiquei é adicionando | cut '\"' -f2 ao comando, mas isso retorna "abcde". Como posso obter a segunda cotação em vez da primeira?

    
por user2824889 08.06.2016 / 21:37

3 respostas

1

Apenas melhore seu comando cut . Você está especificando o delimitador como " , portanto, conte os campos antes de cada " .

Por exemplo

Antes do primeiro " ther não é nada:

$ echo "\"abcde\", \"12345\", \"zyxwv\"" | cut -d \" -f 1
[empty]

Antes do segundo " é abcde

$ echo "\"abcde\", \"12345\", \"zyxwv\"" | cut -d \" -f2
abcde

Antes do terceiro " é ,

$ echo "\"abcde\", \"12345\", \"zyxwv\"" | cut -d \" -f3
, 

Assim, sua saída esperada será a quarta

$ echo "\"abcde\", \"12345\", \"zyxwv\"" | cut -d \" -f4
12345

Espero que a barra invertida de escape não estrague você

    
por 08.06.2016 / 21:52
0

É isso que você está tentando alcançar?

variable=$(cmd | grep tokens | cut -d',' -f 2 | sed 's/ //')
    
por 08.06.2016 / 21:44
0

Podemos simplesmente fazer isso com o awk

por exemplo:

[user@test ~]$ echo "abcde", "12345", "zyxwv" | awk -F"," '{print $2}' 12345

se a saída estiver vindo de um cmd, então

var='<cmd> | awk -F"," '{print $2}'

    
por 23.01.2017 / 14:47