Como se pode remover um intervalo de linhas para cada grupo de n linhas? [duplicado]

0

Eu quero começar com um arquivo assim:

1
2
3
4
5
1
2
3
4
5
1
2
3
4
5

Retorne somente os três últimos de cada grupo de cinco da seguinte forma:

3
4
5
3
4
5
3
4
5

Eu consegui os 2 primeiros usando um código como este:

awk -vn=2 -vm=5 'NR<=i{next}; (NR-i)%m==1{c=1}; c++<=n

mas estou tendo problemas para fazer o mesmo no último agrupamento.

    
por Spacewaste7 15.03.2018 / 02:54

1 resposta

2

Geralmente, essas coisas são mais fáceis usando a aritmética modular, por exemplo

awk '(NR-2)%5 && (NR-1)%5' file
3
4
5
3
4
5
3
4
5

Alternativamente, usando a notação n~m ("n skip m") do sed do GNU:

sed '1~5d;2~5d' file
    
por 15.03.2018 / 03:04

Tags