
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
( n
skip m
)
sed '1~3d' file
que exclui cada terceira linha, começando na primeira.
Responder2
Para selecionar apenas o módulo de linhas N
com awk
try
awk '!(NR%2)' file
ou
awk 'NR%3==0' file
Aqui NR
denota 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