Ok, desculpe... Tem que ser em SED... Não sou bom em SED mas deu para fazer isso:
[EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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:[EMAIL PROTECTED] > Enviada em: sexta-feira, 16 de novembro de 2007 13:00 > Para: [email protected] > Assunto: Re: RES: [shell-script] Comando sed para obter somente nome do > shell sem os argumentos > > > > As vezes, tá mais simples... no exemplo dado... > > [EMAIL PROTECTED] 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:[EMAIL PROTECTED] >> Enviada em: sexta-feira, 16 de novembro de 2007 12:05 >> Para: [email protected] >> 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 <[EMAIL PROTECTED]> >> > 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: [EMAIL PROTECTED] > --------------------------------------------------------------------- > 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: [EMAIL PROTECTED] > --------------------------------------------------------------------- > 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 > > > > >
