Especifique linhas no awk?

2

Vou usar esse script awk para excluir linhas duplicadas do meu arquivo de texto:

awk '!x[$0]++'

No entanto, quero especificar em quais linhas eles devem ser executados.

Pode haver 10000 duplicatas, mas eu gostaria apenas de remover as duplicatas das linhas 10020 a 10030.

No meu caso, é de 24 a 655. Teria sido mais fácil se fossem palavras em que eu poderia {$24, $655} (ou algo similar). Mas não sei como especificar linhas neste caso. Se for importante, estou usando a versão awk 20070501.

    
por DisplayName 05.12.2014 / 21:55

1 resposta

4

Você poderia fazer algo assim:

awk -v low=24 -v high=655 'NR >= low && NR <= high{if (!a[$0]++) print; next};{print}' file

ou melhor ainda

 awk -v low=100 -v high=200 'NR < low || NR > high || !a[$0]++' test.file
    
por 05.12.2014 / 22:03