Como atribuir variável no awk

0

Eu tenho um código como abaixo:

$ awk -F'[]]|[[]' \
  '$0 ~ /^\[/ && $2 >= "2014-04-07 23:00"    { p=1 }
   $0 ~ /^\[/ && $2 >= "2014-04-08 02:00:01" { p=0 }
                                           p { print $0 }' log

Aqui eu quero atribuir "2014-04-07" em uma variável "23:00" em outra variável e assim por diante. E obtenha a entrada de seus valores (usando $ var ou algo parecido). Alguém pode me ajudar a modificar o código acima para que eu possa usar a variável ao invés de gravar o timestamp.

Abaixo está o link para a pergunta original Como extrair registros entre dois carimbos de hora .

    
por Amit 11.04.2014 / 12:08

1 resposta

1

Por favor, tente ler alguma documentação antes de postar aqui. O que você está pedindo é trivial para encontrar com um 5 minutos de pesquisa no google . Poderá querer ler a nossa página de Ajuda em como fazer perguntas para ter uma ideia melhor de como obras do site.

De qualquer forma, você pode passar variáveis como argumentos usando a opção -v :

awk -F'[]]|[[]' -v var1="2014-04-07 23:00" -v var2="2014-04-08 02:00:01" \
  '$0 ~ /^\[/ && $2 >= var1 { p=1 }
   $0 ~ /^\[/ && $2 >= var2 { p=0 }
   p { print $0 }' log

Ou você pode definir as variáveis em um bloco BEGIN :

awk -F'[]]|[[]' \
  'BEGIN{var1="2014-04-07 23:00"; var2="2014-04-08 02:00:01"}
   $0 ~ /^\[/ && $2 >= var1 { p=1 }
   $0 ~ /^\[/ && $2 >= var2 { p=0 }
   p { print $0 }' log
    
por 11.04.2014 / 14:58