
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
( n
omitir )m
sed '1~3d' file
que elimina cada tercera línea, comenzando por la primera.
Respuesta2
Para seleccionar solo líneas módulo N
con awk
try
awk '!(NR%2)' file
o
awk 'NR%3==0' file
Aquí NR
se 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