como funciona a opção awk visto

como funciona a opção awk visto

Recentemente me deparei com um awkvistoopção. Posso ver que está removendo duplicatas em arquivos. Eu poderia usar alguns esclarecimentos sobre como funciona.

cat tes
1
2
3
1
1
1
3
4

com awk visto saída

cat tes | awk '!seen[$0]++'

1
2
3
4

Responder1

seené o nome arbitrário de uma matriz associativa. Não é uma opção de qualquer tipo. Você poderia usar aou bou a maioria dos outros nomes em seu lugar.

O código !seen[$0]++consiste em um teste e um incremento.

Se seen[$0], ou seja, o valor do elemento da matriz associado à chave $0, a linha atual de entrada, for zero (ou vazio), então o valor booleano de !seen[$0]éverdadeiro.

O valor no array correspondente à chave $0é então incrementado, o que significa que o teste seráfalsotodas as outras vezes em que o mesmo valor de $0é encontrado.

O efeito é que o teste éverdadeiroa primeira vez que uma linha específica é vista na entrada, efalsotodas as outras vezes.

Sempre que um teste sem ação associada forverdadeiro, opadrãoação é acionada. A ação padrão é equivalente a { print }ou { print $0 }, que imprime o registro atual, que para todas as contas e propósitos neste exemplo é a linha de entrada atual não modificada.

informação relacionada