Eliminar cada enésima línea del shell

Eliminar cada enésima línea del shell

Estoy intentando eliminar una línea después de N líneas usando awk y parece que no puedo hacerlo bien. El formato del archivo es así.

YYYYYY
XXXXXX
XXXXXX
YYYYYY
XXXXXX
XXXXXX

El verdadero ejemplo sería

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

¿Cómo puedo eliminar las líneas YY o las líneas que dicen "oficina"? Necesito eliminar una línea cada dos líneas independientemente de su contenido.

Respuesta1

Si tiene GNU sed, puede usar la notación de dirección n~m( nomitir )m

sed '1~3d' file

que elimina cada tercera línea, comenzando por la primera.

Respuesta2

Para seleccionar solo líneas módulo Ncon awktry

awk '!(NR%2)' file

o

awk 'NR%3==0' file

Aquí NRse indica el número de filas procesadas hasta el momento.


En su caso específico (elimine todas las líneas con Y):

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

información relacionada