shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Melhor maneira de cortar parte de uma linha.


From: Julio C. Neves
Subject: Re: [shell-script] Re: Melhor maneira de cortar parte de uma linha.
Date: Thu, 1 May 2014 15:32:12 -0300

Valeu grande Flagner!

Tb poderia ser testado matando o grep:

df | awk '/sda/{print $6}'

Em 01/05/2014 12:24, "Flagner Camargo" <address@hidden> escreveu:
 

Bom dia pessoal,


Obrigado pelas sugestões.

Fiz o teste sugerido pelo Julio e, abaixo estão os resultados:

cut -d " " -f2 <(grep sda2 /proc/mounts)

real    0m0.741s
user    0m0.036s
sys    0m0.080s

grep sda2 /proc/mounts | cut -d " " -f2

real    0m0.538s
user    0m0.012s
sys    0m0.092s

df | sed -n 's|/dev/sda2.* ||p'

real    0m0.764s
user    0m0.028s
sys    0m0.076s

mount | grep sda2 | awk '{print $3}'

real    0m0.918s
user    0m0.012s
sys    0m0.144s

df | grep sda2 | awk '{print $6}'

real    0m0.967s
user    0m0.032s
sys    0m0.120s

df | grep sda2 | rev | cut -d " " -f 1 | rev

real    0m1.046s
user    0m0.032s
sys    0m0.200s



Em 30 de abril de 2014 22:57, Julio C. Neves <address@hidden> escreveu:
 

Fala Mercês,
ainda faltou testar

cut -d" " -f2  <(grep ^proc /proc/mounts)

Mas tb deve ser lento

Usando o df eu faria:

df | sed -n 's|/dev/sda1.* ||p'

Vale a pena testar esses 2 métodos tb, mas eu faria dentro de um for. Algo mais ou menos assim:

time for ((i=1; i<200; i++))
{
    df | sed -n 's|/dev/sda1.* ||p' > /dev/null #  A saída não interessa, portanto vamos
                                                #+ jogá-la fora para não prejudicar o tempo
}

Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 26-30/05
Dou treinamento de shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.



Em 30 de abril de 2014 21:33, Fernando Mercês <address@hidden> escreveu:
 

Hummm,


Não acho que o pipe deva ser *sempre* evitado. A construção <<<$(cmd) me parece mais lenta por conta da substituição de comandos.

Não fiz testes apurados, mas:

---
$ time cut -d" " -f2  <<< $(grep ^/dev/sda1 /proc/mounts)
/boot

real    0m0.007s
user    0m0.000s
sys    0m0.000s

$ time grep ^/dev/sda1 /proc/mounts | cut -d' ' -f2
/boot

real    0m0.004s
user    0m0.000s
sys    0m0.000s

---

Abraços.


Att,

Fernando Mercês
Linux Registered User #432779
www.mentebinaria.com.br
------------------------------------
"Ninguém pode ser escravo de sua identidade; quando surge uma possibilidade de mudança é preciso mudar". (Elliot Gould)


2014-04-30 21:22 GMT-03:00 Flavio Steimacher <address@hidden>:
 

Ops,
agora vi o sda2 lá...

cut -d" " -f2  <<< $(grep sda2 /proc/mounts)


Em 30 de abril de 2014 21:18, Flavio Steimacher <address@hidden> escreveu:

Boa noite,
Eu tentaria evitar o pipe e executar da seguinte forma:

$cut -d" " -f2  < /proc/mounts

Acredito ser mais performático.


Em 30 de abril de 2014 21:16, Fernando Mercês <address@hidden> escreveu:

 

Ops, me corrigindo:

$ grep ^/dev/sda1 /proc/mounts | cut -d' ' -f2

Não pode usar o -F, já que tô pedi ao grep para casar no início da linha com o ^, por segurança.

Em tempo, dessa forma há um programa a menos envolvido (df).

Abraço.


Att,

Fernando Mercês
Linux Registered User #432779
www.mentebinaria.com.br
------------------------------------
"Ninguém pode ser escravo de sua identidade; quando surge uma possibilidade de mudança é preciso mudar". (Elliot Gould)


2014-04-30 21:14 GMT-03:00 <address@hidden>:

 

Boa noite Flagner


vc tb pode filtrar as colunas que o df exibe usando --output

O comando dessa forma mostra o ponte de montagem e o dispositivo

df --output=target,source

Particularmente eu prefiro com o uso do awk

var=$( df --output=target,source | grep sda2 | awk '{print $1}' )

mas eu prefiro assim fazer o awk filtrar a linha no lugar do grep 

var=$( df --output=target,source | awk '$2 ~ /sda/ {print $1}' )

É só uma sugestão adicional

Abraços





--
Atenciosamente,

Flavio Steimacher
DBA Oracle
LPIC1 - Linux Professional Institute Certified
CLA - Novell Certified Linux Administrator
DCTS - Novell Data Center Technical Specialist




--
Atenciosamente,

Flavio Steimacher
DBA Oracle
LPIC1 - Linux Professional Institute Certified
CLA - Novell Certified Linux Administrator
DCTS - Novell Data Center Technical Specialist





reply via email to

[Prev in Thread] Current Thread [Next in Thread]