Como ler item de linha e coluna especifica - Shell Script [RESOLVIDO]

1. Como ler item de linha e coluna especifica - Shell Script [RESOLVIDO]

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 22/01/2020 - 17:27h

Prezados,

Mais uma vez, pós algumas pesquisas e testes sem sucesso, torno a pedir ajuda dos amigos...

A situação é a seguinte:

Estou preparando uma séries de scripts por menu, para que outras pessoas que não não tem familiaridade com Linux, possam ver informações importantes e escalonar a outros niveis de suporte. Ainda não está em versão final, mas por exemplo, para passar dos discos, é algo assim:

#!/bin/bash
teste=$(lsblk | grep disk)
echo $teste
DK=$(echo $teste | awk '{print $1}' | head -n1)
HD=$(echo $teste | awk '{print $4}' | head -n1)
echo ""
echo "Seu OS esta instalado em $DK que tem" $HD "de capacidade total"


Ou seja. Da saida inteira, do comando "lsblk" ele me tira só as entradas disk e o resto já sabem. Pedi que ele me lesse dois campos de duas colunas. Neste caso, como a informação que eu preciso mesmo é da primeira linha, não tive nenhum contratempo.


MAS ... Já para fer informações de memoria não tenho tido a mesma sorte. Ao usar o comando "free -h" - onde eu tenho a saida de exemplo abaixo - gostaria de capturar especificamente a memoria total (1,9G), mas não obtenho sucesso.

total usada livre compart. buff/cache disponível
Mem.: 1,9G 520M 720M 72M 665M 1,1G
Swap: 4,0G 0B 4,0G

Tentei algo assim,

#!/bin/bash

MEN=$(free -h)
echo $MEN
MENTOTAL=$(echo $MEN | awk '{print $1}' | head -n1)
echo ""
echo "Sua memoria total é $MENTOTAL"



Mas não obtenho sucesso.

Alguém pode me ajudar mais uma vez nessa?

Muito Obrigado pessoal!!!


  


2. MELHOR RESPOSTA

Afonso T Freitas
atf

(usa openSUSE)

Enviado em 25/01/2020 - 15:20h

Tente isso:
mem=$(free -h)
rr=`echo $mem | cut -d" " -f8`
echo Sua memória é: $rr


Obs.: atenção para os "plics" invertidos. (Shift+`)

LinuxUser#142898

3. Re: Como ler item de linha e coluna especifica - Shell Script [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 22/01/2020 - 18:22h


V aí
mauricio@phantom ~ $ cat sh.sh 
#!/bin/bash
MEN=$(free -h)
echo $MEN
MENTOTAL=$(echo $MEN | awk '{print $8}')
echo ""
echo "Sua memoria total é $MENTOTAL"
mauricio@phantom ~ $ ./sh.sh
total used free shared buff/cache available Mem: 7,7Gi 1,3Gi 5,3Gi 195Mi 1,2Gi 6,0Gi Swap: 8,0Gi 0B 8,0Gi

Sua memoria total é 7,7Gi
mauricio@phantom ~ $


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

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

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




4. Re: Como ler item de linha e coluna especifica - Shell Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/01/2020 - 18:36h

tcboeira escreveu:

Prezados,

Mais uma vez, pós algumas pesquisas e testes sem sucesso, torno a pedir ajuda dos amigos...

A situação é a seguinte:

Estou preparando uma séries de scripts por menu, para que outras pessoas que não não tem familiaridade com Linux, possam ver informações importantes e escalonar a outros niveis de suporte. Ainda não está em versão final, mas por exemplo, para passar dos discos, é algo assim:

#!/bin/bash
teste=$(lsblk | grep disk)
echo $teste
DK=$(echo $teste | awk '{print $1}' | head -n1)
HD=$(echo $teste | awk '{print $4}' | head -n1)
echo ""
echo "Seu OS esta instalado em $DK que tem" $HD "de capacidade total"


Ou seja. Da saida inteira, do comando "lsblk" ele me tira só as entradas disk e o resto já sabem. Pedi que ele me lesse dois campos de duas colunas. Neste caso, como a informação que eu preciso mesmo é da primeira linha, não tive nenhum contratempo.


MAS ... Já para fer informações de memoria não tenho tido a mesma sorte. Ao usar o comando "free -h" - onde eu tenho a saida de exemplo abaixo - gostaria de capturar especificamente a memoria total (1,9G), mas não obtenho sucesso.

total usada livre compart. buff/cache disponível
Mem.: 1,9G 520M 720M 72M 665M 1,1G
Swap: 4,0G 0B 4,0G

Tentei algo assim,

#!/bin/bash

MEN=$(free -h)
echo $MEN
MENTOTAL=$(echo $MEN | awk '{print $1}' | head -n1)
echo ""
echo "Sua memoria total é $MENTOTAL"
Mas não obtenho sucesso.
Alguém pode me ajudar mais uma vez nessa?
Muito Obrigado pessoal!!!

Boa noite Tcboeira.
Segue sugestão, para a solução do problema da memória:
awk '/Mem/ {print "Memória total: "$2}' <<< $(free -h)
Memória total: 5,6Gi



______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


5. Re: Como ler item de linha e coluna especifica - Shell Script [RESOLVIDO]

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 21/02/2020 - 14:01h

Bah pessoas... Muito obrigado, consegui atingir parcialmente o objetivo - que é inicialmente mais importante heheheh
Pelo que entendi, então, os comandos são passados por colunas então as saidas... basicamente isso.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts