Como eu uso o grep para gerar

3

Como eu geraria uma lista que exibe os números mais baixos em um arquivo?

ex.

  1. item da lista 2476 Jackie Woodson: manager:: vendas:: 05/01/59: 110000
  2. item da lista 2000 Jack Wilson: diretor:: contas:: 04/19/55: 80000
  3. item da lista 7700 Wilson Ali: executie:: accounts:: 08/30/56: 90000
  4. item da lista 3364 Bill Wilcocks: manager:: vendas:: 12/12/55: 65000

  5. item da lista 4290 Neil O'bryan: executive:: accounts:: 05/01/59: 100000

  6. item da lista 2000 Wilson Albert: Presidente:: produções:: 03/12/50: 125000

Eu quero listar o show com o intervalo entre 60000 e 9000 e listar somente aqueles usando o grep

Eu tentei

grep "[69]" ..... $ nome do arquivo

    
por Brandom 06.11.2016 / 03:45

3 respostas

2

grep não faz comparações numéricas e não é a ferramenta a ser usada aqui. Eu usaria:

sort --field-separator=":" --numeric-sort --reverse --key=7 --ignore-leading-blanks filename | \
    tail --lines=3  | \
    sort --field-separator=":" --numeric-sort --key=7 --ignore-leading-blanks
    
por waltinator 06.11.2016 / 04:30
1

grep é uma ferramenta de correspondência de linha, o que significa que ela corresponde apenas às linhas com texto específico. O que você deseja é um utilitário de processamento de texto, como awk , que pode fazer comparações.

$ awk -F ':' '$NF > 60000 && $NF<90000' list.txt                                  
List item 2000 Jack Wilson :director: :accounts: :04/19/55: 80000
List item 3364 Bill Wilcocks :manager: :sales: :12/12/55: 65000

A maneira como isso funciona é simples:

  • -F ':' diz ao awk para tratar cada linha como um conjunto de palavras separadas por dois pontos
  • '$NF > 60000 && $NF<90000' examinará a última palavra $NF e verificará se ela é maior que 60000 AND (a && parte) 90000.
por Sergiy Kolodyazhnyy 06.11.2016 / 06:22
0
grep -P '\b[6-8]\d{4}\s*$' ex3
    
por JJoao 08.11.2016 / 17:30

Tags