Tenho esse código que funciona muito bem para o que eu quero (de uma resposta para Imprimir valores duplicados do arquivo CSV, incluindo contagem de ocorrências, por @AdminBee e obrigado, a propósito!):
awk -F'|' '{c[$27]++} END{for (i in c) {if (c[i]>1) print c[i],i}}' input.csv
Preciso colocar isso em um arquivo separado (por exemplo, pk_check.awk
) e então poder chamá-lo de dentro de um zsh, mas passando variáveis como, por exemplo, separador, número_da_coluna, nome_do_arquivo e extensão, algo como
separator=|
column_number=27
filename=input
extension=csv
echo | awk -v x=$separator -v y=$column_number -v w=$filename -v z=$extension -f pk_check.awk
(o código acima é mais que uma ideia e pode estar incorreto ou ineficiente)
A ideia por trás disso é que eu poderia ter (no futuro) mais "mini-testes" awk genéricos o suficiente para serem chamados de um script zsh com parâmetros diferentes e talvez até mesmo esse script de shell pudesse receber ou processar uma lista de parâmetros para arquivos diferentes.
Mas antes de tudo isso, preciso resolver isso primeiro! :) Tentei algumas coisas feias demais para postar aqui e realmente não entendi muito bem como modificar o arquivo .awk para ser genérico ou como chamá-lo a partir de um script de shell.