Como faço para extrair o conteúdo de strings entre aspas de um arquivo

2

tem um arquivo que se parece com isso:

anm="12S123S" family="" type="Std" product="" name="nand" allow="yes"
anm="12321 S=" family="" type="Std" product="" name="dan" need="No"
anm="SWED" family="" type="Std" product="" name="dmr" test="clasic"

O resultado deve ser

12S123S
12321 S=
SWED
    
por sudobean 19.02.2015 / 10:09

2 respostas

1

Para coletar todos os comentários para o OP:

por cut (defina o delimitador de campo para " e imprima o segundo campo apenas nas linhas em que o delimitador existe):

cut -sd\" -f2

por grep jimmij (encontre o padrão e imprima-o após \K ):

grep -Po 'anm="\K[^"]*'

por awk jasonwryan (defina o delimitador de campo para " e imprima o segundo campo):

awk -F\" '{print $2}'

por sed (substitua toda a linha por correspondência inversa (entre parênteses () ) que correspondem a tudo não " após o primeiro " e imprime linhas onde tal substituição foi feita apenas) :

sed -n 's/[^"]*"\([^"]*\).*//p'
    
por 19.02.2015 / 10:31
0

Você pode extrair a parte anm="..." com o grep assim:

grep -Eo 'anm="[^"]*"' file

A opção -o para o grep exibe apenas a parte de uma linha que corresponde.

Em seguida, remova os dois anm=" no início e " no final de cada linha:

grep -Eo 'anm="[^"]*"' file | sed -e 's/^anm=\"//' -e 's/\"$//'
    
por 19.02.2015 / 10:17