Pattern procura a entrada do usuário em um arquivo no Unix usando o awk

0

Estou tentando escrever um script awk para procurar um padrão que receba entrada por usuário, em um arquivo.
Meu código é assim:
awk 'BEGIN{printf "Enter : ";getline input<"/dev/tty"} /'"$input"'/ {print}' <abc.txt
O que eu recebo como saída é o arquivo inteiro. Alguém pode me ajudar a descobrir onde estou dando errado?

    
por learner1 02.05.2016 / 13:44

1 resposta

1

O que você faz é: você leu o padrão de tty, você coloca em uma variável do awk (não do shell) chamada input, então você corresponde a linha do conteúdo de uma variável shell chamada input. (Basta olhar para as aspas e tentar interpretar o código você mesmo.) Essa variável está vazia, então awk combina a linha com //, um regexp vazio que sempre corresponde.

Tudo o que você precisa fazer é

$0 ~ input { print }

ou

match( $0, input) { print }

Na verdade, "{print}" pode ser omitido porque a ação padrão para qualquer correspondência é imprimir o registro.

    
por 02.05.2016 / 14:12

Tags