Como ler item de linha e coluna especifica - Shell Script

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

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. Re: Como ler item de linha e coluna especifica - Shell Script

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 |------------------------------------------------------




3. 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
______________________________________________________________________


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

Afonso T Freitas
atf

(usa Mageia)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts