Para corresponder ao conteúdo de ARGV[i]
, você precisa alterar seu teste para
if ($2 ~ ARGV[i])
Caso contrário, você está testando uma correspondência para o literal regex 'ARGV[i]'
, que não é o que você deseja.
Então o seu script funcionará (tipo) se você executá-lo assim:
awk -f qtest.awk testing.txt "Jesse Pinkman" "Walter White"
Mas, em seguida, ele lançará um erro quando terminar de ler o testing.txt e tentar abrir o arquivo "Jesse Pinkman" (a menos, é claro, que você tenha um arquivo com esse nome).
Em outras palavras, o ARGV contém os nomes de arquivos passados para o seu script pelo shell e você não deve tentar usá-lo para passar argumentos arbitrários. A maneira usual de passar argumentos sem arquivo para um script awk é usar a sintaxe -v var = val
para inicializar variáveis em seu script.
Mas suspeito que uma abordagem melhor aqui é ler testing.txt em seu bloco BEGIN, usando a sintaxe getline var <namefile.txt
, dividindo os dados (usando a função split()
) e armazenando os dados divididos em uma matriz 2D . Em seguida, o loop de processamento principal pode ler nomes (de um arquivo ou do usuário) e você pode testar esses nomes usando os dados salvos no array.