Como extrair parte da linha do arquivo

1

arquivo.txt:

hello:"hello"; my love; my world:"my is world"
Questions<<my:"475832">> data-addon="652256"---my lover :"987654321";;;Questions
heart!Questions

mas eu quero pegar o número depois de uma string "data-addon="

exemplo:

652256

É possível com o comando awk ?

    
por manuel 16.11.2015 / 22:05

4 respostas

0

É mais fácil usar grep :

grep -Po 'data-addon="\K[^"]*' file

ou para armazenar a saída na variável:

var=$(grep -Po 'data-addon="\K[^"]*' file)
    
por 17.11.2015 / 01:37
0

Salve seus dados de amostra como manuel.txt e execute:

awk '/data-addon/ {gsub(/^.*data-addon="/,"");gsub(/".*/,"");print}' manuel.txt

para armazenar o resultado em uma variável:

myvar=$(awk '/data-addon/ {gsub(/^.*data-addon="/,"") ; gsub(/".*/,"") ; print}' manuel.txt)

Isso seria mais fácil no sed:

sed -n '/data-addon/ { s/^.*data-addon="// ; s/".*// p}' manuel.txt 
myvar=$(sed -n '/data-addon/ { s/^.*data-addon="// ; s/".*// p}' manuel.txt)
    
por 17.11.2015 / 00:07
0

Nesse tipo de cenário, eu uso awk , dividindo palavras entre aspas e espaços & passar pelos campos:

awk -F'[ "]*' \
'
{
  for (i=1;i<=NF;i++)
  {
    if ($i == "data-addon=")
    {
      print $(i+1)
      exit
    }
  }
}
' file.txt

HTH

    
por 17.11.2015 / 01:09
-1

O seguinte deve fazer o que quiser:

cat file.txt | awk -F"data-addon=" '{print $2}' | awk -F\" '{print $2}' | awk NF
    
por 16.11.2015 / 22:40