Exclua cada enésima linha no shell

Exclua cada enésima linha no shell

Estou tentando excluir uma linha após N linhas usando awk e não consigo acertar. O formato do arquivo é assim

YYYYYY
XXXXXX
XXXXXX
YYYYYY
XXXXXX
XXXXXX

O verdadeiro exemplo seria

office3
3
1
office3
6
1
office3
6
3
office3
1
1

Como posso deletar as linhas YY ou as linhas que dizem "escritório". Preciso excluir uma linha a cada duas linhas, independentemente do seu conteúdo.

Responder1

Se você possui GNU sed, você pode usar a notação de endereço n~m( nskip m)

sed '1~3d' file

que exclui cada terceira linha, começando na primeira.

Responder2

Para selecionar apenas o módulo de linhas Ncom awktry

awk '!(NR%2)' file

ou

awk 'NR%3==0' file

Aqui NRdenota o número de linhas processadas até agora.


No seu caso específico (remova todas as linhas com Y):

$ echo 'YYYYYY
XXXXXX
XXXXXX
YYYYYY
XXXXXX
XXXXXX' | awk '!(NR%3==1)'
XXXXXX
XXXXXX
XXXXXX
XXXXXX

informação relacionada