Menor número [RESOLVIDO]

1. Menor número [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 30/12/2017 - 00:10h

Pessoas ... tenho 4 linhas e preciso ver qual o menor numero
L1
L2
L3
L4

onde , pode haver string em uma ou mais ( no caso elas seriam ignoradas) , pelo menos uma vai ter um numero ... qual a melhor maneira de definir o menor deles ??

OBS: eu consigo retorno tb só das q contem numeros se for a melhor solução !!!


  


2. MELHOR RESPOSTA

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 30/12/2017 - 19:26h

Se entendi bem... veja se isso resolve:
$ cat num.txt 
4
aa
2
5
3
bb
1
cc

$ sort -n num.txt | sed -n '/[0-9]/{p;q}'
1


3. A lógica é essa

Bruno Cavalcanti
Bruno_Cavalcanti

(usa CentOS)

Enviado em 30/12/2017 - 02:52h

Vc só vai precisar se virar com a expressão regular.

Fiz referente ao exemplo que vc deu.

#!/bin/bash

MENOR=1000
for va in $(cat lista); do

VALOR=$(echo "${va}" | cut -d "L" -f 2)
if test ${VALOR} -lt ${MENOR}; then
MENOR=${VALOR}
fi
done

echo "Menor valor = ${MENOR}"



4. Re: Menor número

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 30/12/2017 - 11:16h

Bruno_Cavalcanti escreveu:

#!/bin/bash

MENOR=1000
for va in $(cat lista); do
VALOR=$(echo "${va}" | cut -d "L" -f 2)
if test ${VALOR} -lt ${MENOR}; then
MENOR=${VALOR}
fi
done
echo "Menor valor = ${MENOR}"


velho ... funcionou de boa ... só tô apanhando para entender a lógica da parada ..

1 - Pq vc setou a variável "MENOR" a principio com um valor ??? ( no caso 1000 )
2 - não entendi o pq do "CUT" e nem do "test" ...

Me ajuda aí para me explicar pq sou tapado para entender loop's !!!

Abçs

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



5. Re: Menor número [RESOLVIDO]

Bruno Cavalcanti
Bruno_Cavalcanti

(usa CentOS)

Enviado em 30/12/2017 - 12:59h

Mauriciodez escreveu:

Bruno_Cavalcanti escreveu:

#!/bin/bash # informando qual interpretador do script

MENOR=1000 # dando um valor inicial a variavel MENOR, maior que todos os valores da lista. (Evitar erros de algoritmo)
for va in $(cat lista); do # atribuindo todas as linhas da saida do comando cat lista, a variavel va.

cut = cortar o comando echo "${va}" | cut -d "L" -f 2 significa imprima o valor de "va" e encaminhe a saida "|" para o comando "cut" com o delimitador -d "L" e filtre o segundo parametro -f 2

se filtrasse o parametro 1 -f 1, o resoltado seria a letra L

VALOR=$(echo "${va}" | cut -d "L" -f 2) # variavel VALOR recebe o resultado de echo "L1" | cut -d "L" -f 2
if test ${VALOR} -lt ${MENOR}; then # test = [ ] - em shellscrypt é a mesma coisa.
EX: if [ ${VALOR} -lt ${MENOR} ]; then # daria o mesmo resultado.

se $VALOR -lt(litle - menor) $MENOR; então
MENOR=${VALOR}
fimse
fi
done # fim do laço
echo "Menor valor = ${MENOR}" # imprima na tela o menor valor.




velho ... funcionou de boa ... só tô apanhando para entender a lógica da parada ..

1 - Pq vc setou a variável "MENOR" a principio com um valor ??? ( no caso 1000 )
2 - não entendi o pq do "CUT" e nem do "test" ...

Me ajuda aí para me explicar pq sou tapado para entender loop's !!!

Abçs

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------





6. Re: Menor número [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 30/12/2017 - 13:11h

Bruno_Cavalcanti escreveu:
MENOR=1000 # dando um valor inicial a variavel MENOR, maior que todos os valores da lista. (Evitar erros de algoritmo)
é necessário ??? e se eu não souber qual vai ser esse MAIOR da lista ... coloco 1 trilhão ??? ... eu não sei qual o maior da lista, os números são gerados dinamicamente sacou ??? mais com certeza é menor que 1 trilhão .... hehehheh

Bruno_Cavalcanti escreveu:
cut = cortar o comando echo "${va}" | cut -d "L" -f 2 significa imprima o valor de "va" e encaminhe a saida "|" para o comando "cut" com o delimitador -d "L" e filtre o segundo parametro -f 2
se filtrasse o parametro 1 -f 1, o resoltado seria a letra L
Velho ... o que eu não entendi foi de onde vai sair esse "L" para ser cortado ... as linhas só tem numeros !!!

Bruno_Cavalcanti escreveu:
EX: if [ ${VALOR} -lt ${MENOR} ]; then # daria o mesmo resultado.
Dessa eu não sabia ... hehehehh ... vivendo e aprendendo !!

Abçs

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



7. Re: Menor número [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 30/12/2017 - 21:16h

Ryuk escreveu:

Se entendi bem... veja se isso resolve:
$ cat num.txt 
$ sort -n num.txt | sed -n '/[0-9]/{p;q}'
1


velho ... atraves desse código seu lembrei q era isso que eu fazia no excel ... ordena e extraía ... como eu não entendi a moral do teu SED eu fiz assim

sort -n txt.txt | sed '/[^0-9]/d' | head -n 1 


NOTA: AS vezes as paradas são tão simples q a gente acaba complicando !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts