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

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

Re: RES: RES: [shell-script] Comando sed para obter somente nome do sh


From: Geison Farias
Subject: Re: RES: RES: [shell-script] Comando sed para obter somente nome do shell sem os argumentos
Date: Fri, 16 Nov 2007 14:38:52 -0300
User-agent: Thunderbird 2.0.0.9 (Windows/20071031)


Ok, desculpe... Tem que ser em SED... Não sou bom em SED mas deu para fazer isso:

[dr@brasil mod]$ cat teste.txt
root 28051 1 0 15:11:59 ? 0:00 sh /util/shell/suporte_001.sh arg01 arg02
root 28051 1 0 Nov 16 ? 0:00 sh /util/shell/suporte_001.sh arg01 arg02
root 28051 1 0 Nov 16 tty1 0:00 sh /util/shell/suporte_001.sh arg01 arg02
[dr@brasil mod]$ cat teste.txt | sed -e 's|^.* /|/|' -e 's/ .*$//'
/util/shell/suporte_001.sh
/util/shell/suporte_001.sh
/util/shell/suporte_001.sh

Geison Farias
Recife - PE


Info Suporte - Rodrigo Nery escreveu:
A coluna TTY também pode ser variável:


root 28051 1 0 15:11:59 ? 0:00 sh /util/shell/suporte_001.sh arg01 arg02

root 28051 1 0 Nov 16 tty1 0:00 sh /util/shell/suporte_001.sh arg01 arg02

Preciso que o "sed" obtenha o que está entre a primeira "/" e o próximo
espaço em branco (ou final da linha, se não houver argumentos).
Obrigado,

Rodrigo


-----Mensagem original-----
De: Geison Farias [mailto:address@hidden]
Enviada em: sexta-feira, 16 de novembro de 2007 13:00
Para: address@hidden
Assunto: Re: RES: [shell-script] Comando sed para obter somente nome do
shell sem os argumentos



As vezes, tá mais simples... no exemplo dado...

[dr@brasil mod]$ cat teste.txt | cut -f2 -d"?" | cut -f4 -d" "
/util/shell/suporte_001.sh
/util/shell/suporte_001.sh

Geison Farias
Recife - PE


Info Suporte - Rodrigo Nery escreveu:
Olá Alexandre, obrigado pela resposta, mas a posição pode ser variável,
nem
sempre será a 9ª coluna, pois o campo correspondente à data pode mudar,
veja:

root 28051 1 0 15:11:59 ? 0:00 sh /util/shell/suporte_001.sh arg01 arg02

root 28051 1 0 Nov 16 ? 0:00 sh /util/shell/suporte_001.sh arg01 arg02


Desta forma o nome do processo passa para o 10º campo.
Eu já havia pensado no awk, porém o nome do shell não tem posição
definida,
pode ser tanto na 9ª quanto na 10ª posição.

Rodrigo


-----Mensagem original-----
De: Alexandre Mulatinho [mailto:address@hidden]
Enviada em: sexta-feira, 16 de novembro de 2007 12:05
Para: address@hidden
Cc: Info Suporte - Rodrigo Nery
Assunto: Re: [shell-script] Comando sed para obter somente nome do shell
sem
os argumentos





Em 16/11/07, Info Suporte - Rodrigo Nery <address@hidden>
escreveu:
Olá pessoal,

Estou montando uma expressão regular, porém a mesma não está
funcionando a contento. Vejam os exemplos abaixo da saída do comando "ps":

root 28051 1 0 15:11:59 ? 0:00 sh
/util/shell/suporte_001.sh arg01 arg02
user1 6075 6074 0 11:01:00 ? 0:00 /usr/bin/sh
/util/shell/suporte_002.sh
user2 6075 6074 0 11:01:00 ? 0:00 /bin/sh
/util/shell/suporte_003.sh 001 002 003

Preciso obter o nome do shell que está rodando, para isso tenho
direciono o comando "ps -ef | grep <nome do shell> | grep -v grep" para um
arquivo temporário e executo os comandos "sed" abaixo:

cat /tmp/temp01 | sed 's;^.* \(/.*\) [A-Za-z0-9].*$;\1;g' | sed
's;^.* \(/.*\)$;\1;g'

A saída é:

/util/shell/suporte_001.sh arg01
/util/shell/suporte_002.sh
/util/shell/suporte_003.sh 001 002

E deveria ser:

/util/shell/suporte_001.sh
/util/shell/suporte_002.sh
/util/shell/suporte_003.sh

O que posso fazer para obter a saída desejada (somente o nome do
shell, eliminando todos os argumentos, se houver)?

Obrigado a todos!
Rodrigo

Fala Rodrigo,

Você pode tentar utilizar o AWK pra isso, ele tem uma boa forma de
delimitar
campos e reduziria o código em apenas uma linha, você precisa pegar todas
as
entradas que tiverem como 6o argumento uma palavra que contenha 'suporte':

$ ps ax | grep suport | awk '{ print $6; }'
/util/shell/suporte_001.sh
/util/shell/suporte_002.sh
/util/shell/suporte_003.sh

com o SED:
$ ps ax | grep sh | sed -e 's/.*\?[0-9]:[0-9][0-9] \?.*.\? //'



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

Links do Yahoo! Grupos


---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

Links do Yahoo! Grupos





reply via email to

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