perl
para o resgate
$ cat ip.txt
AA 110 B 10 .. BB 15 ... BBB 20 D F 25 D D
AA 111 B 50 .. BB 55 ... BBB 30 F F 45 F F
AA 112 C 2 .. BB 3 ... BBB 0 D F 0 D F
AA 120 D 2 .. FF 3 ... FFF 3 D F 3 D D
$ perl -ae 'print if !(grep { $_ <= 10 && /^\d+$/ } @F)' ip.txt
AA 111 B 50 .. BB 55 ... BBB 30 F F 45 F F
-
-a
divide a linha de entrada no espaço e salva em@F
array -
grep { $_ <= 10 && /^\d+$/ } @F
obtém todos os elementos da matriz@F
que são feitos apenas de dígitos e cujo valor é<= 10
- imprima as linhas se o grep retornar
0
. O()
em torno degrep
significa que ele retornará a contagem de correspondências em vez de os próprios elementos
Vamos testar outra condição:
$ perl -ae 'print if !(grep { $_ < 10 && /^\d+$/ } @F)' ip.txt
AA 110 B 10 .. BB 15 ... BBB 20 D F 25 D D
AA 111 B 50 .. BB 55 ... BBB 30 F F 45 F F
Certas condições, como nesta pergunta, podem ser resolvidas com grep
também (o que provavelmente é mais rápido que perl
solution)
$ grep -vw '[0-9]\|10' ip.txt
AA 111 B 50 .. BB 55 ... BBB 30 F F 45 F F
$ grep -vw '[0-9]' ip.txt
AA 110 B 10 .. BB 15 ... BBB 20 D F 25 D D
AA 111 B 50 .. BB 55 ... BBB 30 F F 45 F F
-
-v
linhas diferentes de padrão de correspondência -
-w
corresponde apenas a palavras inteiras