Separando números pares e ímpares

1

Eu tenho um arquivo com os primeiros 100 números e tenho que levar apenas os números pares para outro arquivo. Como posso fazer isso com grep ?

    
por anmapaf 10.03.2017 / 06:00

3 respostas

2

Supondo que os números são separados por nova linha, com awk :

awk '! ($0 % 2)' file.txt

Para salvar a saída em um arquivo:

awk '! ($0 % 2) {print >"even.txt"}' file.txt 

Exemplo:

% cat file.txt             
1
2
3
4

% awk '! ($0 % 2)' file.txt
2
4

% awk '! ($0 % 2) {print >"even.txt"}' file.txt 

% cat even.txt 
2
4
    
por heemayl 10.03.2017 / 06:15
1

Use regex com grep

grep "^[0-9]*[13579]$" FILE > oddsfile.txt

grep "^[0-9]*[02468]$" FILE > evensfile.txt

Isto canaliza o arquivo para o grep, que combina com o regex e o grava em um arquivo

    
por brndn2k 10.03.2017 / 06:06
1

Se os números forem separados por espaço (todos em uma linha), teste isso:

grep -E '(^| )1?[0-9]?[02468]( |$)' file

Entendi!

Adicione a opção -o para correspondência apenas e redirecione para um novo arquivo:

grep -Eo '(^| )1?[0-9]?[02468]( |$)' file > newfile

Se os números forem separados por nova linha:

grep -E '^1?[0-9]?[02468]$' file > newfile

Notas:

  • -E usa expressões regulares estendidas
  • (this|that) correspondência this ou that
  • ^ início da linha
  • $ fim da linha
  • ? zero ou um dos caracteres anteriores
por Zanna 10.03.2017 / 09:40