Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

478
Visualizações
Remove odd or even lines from a text file

I need to remove odd lines in a text file to make a down-sampling. I've found this command,

awk 'NR%2==0' file

but it only prints the odd lines in the terminal. How to really remove them?

I don't really care for even or odd, I want them removed from the file or printed in another file. This only prints them in the terminal.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

awk

The % is a modulus operator and NR is the current line number, so NR%2==0 is true only for even lines and will invoke the default rule for them ({ print $0 }). Thus to save only the even lines, redirect the output from awk to a new file:

awk 'NR%2==0' infile > outfile

sed

You can accomplish the same thing with sed. devnulls answer shows how to do it with GNU sed. Below are alternatives for versions of sed that do not have the ~ operator:

keep odd lines

sed 'n; d' infile > outfile

keep even lines

sed '1d; n; d' infile > outfile
over 4 years ago · Santiago Trujillo Relatório

0

Using GNU sed:

sed -i '0~2d' filename

to remove the even numbered lines from the file.

For removing odd numbered lines:

sed -i '1~2d' filename

The -i option would cause the changes to be saved to the file in-place.

Quoting from the manual:

`FIRST~STEP'
     This GNU extension matches every STEPth line starting with line
     FIRST.  In particular, lines will be selected when there exists a
     non-negative N such that the current line-number equals FIRST + (N
     * STEP).  Thus, to select the odd-numbered lines, one would use
     `1~2'; to pick every third line starting with the second, `2~3'
     would be used; to pick every fifth line starting with the tenth,
     use `10~5'; and `50~0' is just an obscure way of saying `50'.
over 4 years ago · Santiago Trujillo Relatório

0

This might work for you (both GNU and non-GNU sed):

 sed -n 'p;n' file # keep odd
 sed -n 'n;p' file # keep even

-n: suppress printing

p: print current line

n: next line

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda