Obtenha um número específico na linha

1

Eu tenho este arquivo

    123 My name is Lorry I'm 29 years old 10000 45
    148 Name - Dan 20000 18
    895 My name is John Lazaro I like tennis 30000 63

E eu quero imprimir apenas os últimos números em uma linha

45
18
63

É possível fazer isso?

ATUALIZAÇÃO: Agora quero imprimir

10000
20000
30000
    
por user3334375 01.06.2015 / 17:59

3 respostas

3

Você pode tentar usar awk para imprimir o último arquivo:

awk '{ print $NF }' file

e para o campo de impressão ao lado do último:

awk '{ print $(NF - 1) }' file
    
por 01.06.2015 / 18:08
4

No seu caso, a última palavra (separada por espaços) é um número. Se esse é sempre o caso, seu problema pode ser reduzido para imprimir a última palavra como:

awk 'NF {print $NF}'

ou

sed 's/.* //'

Para o anterior:

awk 'NF >= 2 {print $(NF-1)}'

Se você quiser imprimir a última palavra if é um número inteiro decimal positivo, então isso se torna:

awk '$NF ~ /^[0-9]+$/ {print $NF}'

(substitua $NF por $(NF-1) pelo anterior).

Se você quiser imprimir a seqüência mais à direita de dígitos decimais em todas as linhas, então:

sed -n 's/^/./;s/.*[^0-9]\([0-9]\{1,\}\).*//p'

Para o anterior:

sed -n 's/^/./;s/.*[^0-9]\([0-9]\{1,\}\)[^0-9].*[0-9].*//p'
    
por 01.06.2015 / 18:09
1

Se alguém precisar da minha saída atualizada, basta digitar

awk '{print $(NF-1)}' file.txt
    
por 01.06.2015 / 18:20

Tags