iniciante em sed [RESOLVIDO]

1. iniciante em sed [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/12/2009 - 15:23h

programa2=`echo arquivo diretorio | sed -e 's/[^arquivo] ^.//'`
echo "$programa2"

=====================================

parte do meu script tem essa linha de codigo, oq eu quero fazer eh tirar "diretorio" e deixar somente "arquivo"

o problema eh que esse diretorio nao eh a palava "diretorio" e sim eh um diretorio, ou seja, pode ser qualquer outro nome


  


2. Re: iniciante em sed [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/12/2009 - 18:22h

hum... sera que num era mió vc postar direto o codigo?

ou entao:

{{{

programa2=`echo "arquivo diretorio" | cut -d" " -f1`

echo "$programa2"

}}}

será?

[]s


3. Re: iniciante em sed [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/12/2009 - 20:14h

aki ta meu script

======================================================================


#!/bin/bash

# variaveis
DIR=`pwd`
AQVLOG=programas-instalados
AQVLOG2=programas-instalação
AQVLOGDIR=diretorio-instalação
DIRLOG=/var/log/DGF
BIN=/usr/local/bin
pacote=/home/douglas/outros/scripts/DGF


#cria os diretorios e os arquivos, caso esteja faltando
if [ ! -d "$DIRLOG" ]; then
rm -rf "$DIRLOG"
mkdir -p "$DIRLOG"
fi

if [ ! -e "$DIRLOG/$AQVLOG2" ]; then
touch $DIRLOG/$AQVLOG2
fi

if [ ! -e "$DIRLOG/$AQVLOG" ]; then
touch $DIRLOG/$AQVLOG
fi

if [ ! -e "$DIRLOG/$AQVLOGDIR" ]; then
touch $DIRLOG/$AQVLOGDIR
fi


# função
Fprogramas() {
programa=$(dialog --stdout \
--title 'Pergunta' \
--separate-output \
--checklist 'escolha as opções' 0 0 0 \
"todos" 'todos os programas do diretorio' ON \
"outros" 'outros programas' OFF \
"$1" '' OFF \
"$2" '' OFf \
"$3" '' OFF \
"$4" '' OFF \
"$5" '' OFF \
"$6" '' OFF \
"$7" '' OFF \
"$8" '' OFF \
"$9" '' OFF )
}


# decide oq quer fazer entre instalar e desinstalar programas
escolha=$( dialog --stdout \
--menu 'O que quer fazer?' \
0 0 0 \
Instalar 'Instalar os programas' \
Desinstalar 'Desinstalar os programas' )


# aplica a escolha desejada, de instalar ou desinstalar
case "$escolha" in


# instala
Instalar)

dialog --dselect $HOME 0 0 2> /tmp/resposta.tmp
diretorio=`cat /tmp/resposta.tmp`; rm -f /tmp/resposta.tmp

ls $diretorio &> "$DIRLOG/$AQVLOGDIR"
programadir=`grep ^.*$ $DIRLOG/$AQVLOGDIR`

for resultado in $programadir
do
resultado2="$resultado2 $resultado"
done


# chama função
Fprogramas $resultado2
[ $? -eq 1 ] && exit 1

if [ "$programa" = "todos" ]; then
programa=$programadir/*
else

programa2=`echo $programa | sed -e 's/[^outros] ^.//'` ########
echo "$programa2"

if [ "$programa2" = "outros" ]; then
outrosprogramas=$(dialog --stdout --inputbox 'digite os programas:' 0 0)
[ $? -eq 1 ] && exit 1
programa="$outrosprogramas"
fi
fi

ls $programa &> "$DIRLOG/$AQVLOG2"
for prog in `grep dgf* $DIRLOG/$AQVLOG2`
do
prog=`echo $prog | sed -e 's/.*://'` # filtra o nome do programa
if [ -e "$BIN/$prog" ]; then
dialog --title 'Instalação' --backtitle 'dgf' --yesno "O programa $prog ja existe, deseja instala-lo por cima?" 0 0
case $a in
0) cp "$prog" $BIN ;;
1) exit 1 ;;
esac
else
cp "$prog" $BIN
fi
prog2=`echo $prog | sed -e 's/.*\///'` # filtra o nome do programa


# cria o log programas-instalados
while [ -z `grep $prog2 $DIRLOG/$AQVLOG` ];
do
echo "$prog2" >> "$DIRLOG/$AQVLOG"
done
done
;;

# desinstala
Desinstalar)

for prog in `grep dgf* "$DIRLOG/$AQVLOG"`
do

prog=`echo $prog | sed -e 's/.*://'` # filtra o nome do programa

rm "$BIN/$prog"

done

;;

esac

#========================FIM===========================


========================================================================


vou ver se da certo


4. Re: iniciante em sed [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/12/2009 - 20:25h

entao, deu errado, foi mal eu que nao vi direito, eh que na verdade

programa2=`echo " arquivo diretorio" | cut -d" " -f1`

eh para escluir e deixar somente a 1 coluna

na verdade os valores estão tudo na 1 coluna

eu tenho que excluir da 2° linha para baixo


5. RESOLVIDO!

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/12/2009 - 21:12h

agr está assim

-------------------------------------------------------

#!/bin/bash

# variaveis
DIR=`pwd`
AQVLOG=programas-instalados
AQVLOG2=programas-instalação
AQVLOGDIR=diretorio-instalação
DIRLOG=/var/log/DGF
BIN=/usr/local/bin
pacote=/home/douglas/outros/scripts/DGF


#cria os diretorios e os arquivos, caso esteja faltando
if [ ! -d "$DIRLOG" ]; then
rm -rf "$DIRLOG"
mkdir -p "$DIRLOG"
fi

if [ ! -e "$DIRLOG/$AQVLOG2" ]; then
touch $DIRLOG/$AQVLOG2
fi

if [ ! -e "$DIRLOG/$AQVLOG" ]; then
touch $DIRLOG/$AQVLOG
fi

if [ ! -e "$DIRLOG/$AQVLOGDIR" ]; then
touch $DIRLOG/$AQVLOGDIR
fi


# função
Fprogramas() {
programa=$(dialog --stdout \
--title 'Pergunta' \
--separate-output \
--checklist 'escolha as opções' 0 0 0 \
"todos" 'todos os programas do diretorio' ON \
"outros" 'outros programas' OFF \
"$1" '' OFF \
"$2" '' OFf \
"$3" '' OFF \
"$4" '' OFF \
"$5" '' OFF \
"$6" '' OFF \
"$7" '' OFF \
"$8" '' OFF \
"$9" '' OFF )
}


# decide oq quer fazer entre instalar e desinstalar programas
escolha=$( dialog --stdout \
--menu 'O que quer fazer?' \
0 0 0 \
Instalar 'Instalar os programas' \
Desinstalar 'Desinstalar os programas' )


# aplica a escolha desejada, de instalar ou desinstalar
case "$escolha" in


# instala
Instalar)

dialog --dselect $HOME 0 0 2> /tmp/resposta.tmp
diretorio=`cat /tmp/resposta.tmp`; rm -f /tmp/resposta.tmp

ls $diretorio &> "$DIRLOG/$AQVLOGDIR"
programadir=`grep ^.*$ $DIRLOG/$AQVLOGDIR`

for resultado in $programadir
do
resultado2="$resultado2 $resultado"
done


# chama função
Fprogramas $resultado2
[ $? -eq 1 ] && exit 1

if [ "$programa" = "todos" ]; then
programa=$programadir/*
else

programa2=`echo "$programa" | fgrep -w outros` ########
echo "$programa2"

if [ "$programa2" = "outros" ]; then
outrosprogramas=$(dialog --stdout --inputbox 'digite os programas:' 0 0)
[ $? -eq 1 ] && exit 1
programa="$outrosprogramas `echo "$programa" | fgrep -v outros`"
fi
fi

ls $programa &> "$DIRLOG/$AQVLOG2"
for prog in `grep dgf* $DIRLOG/$AQVLOG2`
do
prog=`echo $prog | sed -e 's/.*://'` # filtra o nome do programa
if [ -e "$BIN/$prog" ]; then
dialog --title 'Instalação' --backtitle 'dgf' --yesno "O programa $prog ja existe, deseja instala-lo por cima?" 0 0
case $a in
0) cp "$prog" $BIN ;;
1) exit 1 ;;
esac
else
cp "$prog" $BIN
fi
prog2=`echo $prog | sed -e 's/.*\///'` # filtra o nome do programa


# cria o log programas-instalados
while [ -z `grep $prog2 $DIRLOG/$AQVLOG` ];
do
echo "$prog2" >> "$DIRLOG/$AQVLOG"
done
done
;;

# desinstala
Desinstalar)

for prog in `grep dgf* "$DIRLOG/$AQVLOG"`
do

prog=`echo $prog | sed -e 's/.*://'` # filtra o nome do programa

rm "$BIN/$prog"

done

;;

esac

#========================FIM===========================

----------------------------------------------------------------------






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts