Apagar linhas em arquivos

1. Apagar linhas em arquivos

demetrius
demetriusfr

(usa Fedora)

Enviado em 18/06/2012 - 17:25h

Boa tarde pessoal sou novo no forum estou tentando criar uma shell de backup.

tenho while onde vou lendo um arquivo e copiando os arquivos para outro diretorio, porem dentro desse while fiz um if verificando se muda de empresa, porem logo apos copiar o arquivo gostaria de apagar a linha em que o while esta. fiz o seguinte codigo porem ate o momento nao obtive sucesso em apagar as linhas ja coipadas se alguem puder me ajudar.

segue codigo:

#Obtem diretorios
#---------------------------------------------

#mv /mnt/nfe/lista_nfe /cpnotas
databkp=`date "+%m-%y"`
mkdir /mnt/backup/diversos_cpd/NFE/$databkp
chmod 775 /mnt/backup/diversos_cpd/NFE/$databkp


# Localiza arquivos que foram alterados hoje
#---------------------------------------------

for emp in 02 03 #05 06 08 09 10 11 12 16 17 19 20 22 23
do

mkdir /mnt/backup/diversos_cpd/NFE/$databkp/$emp
chmod 775 /mnt/backup/diversos_cpd/NFE/$databkp/$emp
dir2=/mnt/backup/diversos_cpd/NFE/$databkp/$emp

while read nfe
do
if [ ${nfe:12:2} != $emp ]; then
break
else
cp -ap "$nfe" "$dir2"
#sed -i "/$nfe/d" /cpnotas/lista_nfe
fi
done < /cpnotas/lista_nfe
done



  


2. Resposta

Ronaldo Azarias dos Santos
rsantos0504

(usa Slackware)

Enviado em 18/06/2012 - 21:58h

#!/bin/bash
#Obtem diretorios
#---------------------------------------------

#mv /mnt/nfe/lista_nfe /cpnotas
databkp=`date "+%m-%y"`

if [ ! -d /mnt/backup/diversos_cpd/NFE/$databkp ]
then
mkdir /mnt/backup/diversos_cpd/NFE/$databkp
chmod 775 /mnt/backup/diversos_cpd/NFE/$databkp
fi



# Localiza arquivos que foram alterados hoje
#---------------------------------------------



cat /cpnotas/lista_nfe | while read Nfe
do
ii="1"
for Emp in 02 03 06 08 09 10 11 12 16 17 19 20 22 23
do
Dir="/mnt/backup/diversos_cpd/NFE/$databkp/${Emp}"
[ ! -d ${Dir} ] && mkdir ${Dir}
[ "${Nfe}" == "${Emp}" ] && ii="0"
done
if [ "${ii}" -eq "0" ]
then
cp -apf ${Nfe} ${Dir}/
echo "${Nfe}" >> /cpnotas/lista_nfe_tmp
fi
done


3. Re: Apagar linhas em arquivos

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 18/06/2012 - 23:01h

O comando está certo, mas você deixou comentado:

#sed -i "/$nfe/d" /cpnotas/lista_nfe

retire o '#'

sed -i "/$nfe/d" /cpnotas/lista_nfe

Ou foi intencional, para demonstrar ;-) ??


4. Re: Apagar linhas em arquivos

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 18/06/2012 - 23:03h

Se precisar depurar para encontrar o erro no seu script, basta usar:

bash -x nome_script.sh

Assim vc vai poder ver como o script está trabalhando e vai ficar mais fácil saber o que terás que mudar para que ele funcione...


5. Re: Apagar linhas em arquivos

demetrius
demetriusfr

(usa Fedora)

Enviado em 19/06/2012 - 07:56h

Deixei comentado pois estava testando outra coisa no script,quando rodo ele descomentado aparece a seguinte mensagem:

sed: -e expression #1, char 3: unknown command: `m'

ate o momento nao descobri o que é


6. Re: Apagar linhas em arquivos

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 19/06/2012 - 23:41h

Execute ele assim:

bash -x nome_script.sh

E veja o que acontece ao chegar no sed, se possível poste aqui...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts