Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Compiz-Fusion, coisa linda cheia de graça
Por JoseLucas
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Script "apagador de linhas"
Linux user
null_terminated
14/03/2005
Por conta de um problema que tive na empresa onde trabalho, criei este script que pode ser útil para quem tiver um problema semelhante ou simplesmente para aqueles que querem aprender um pouco sobre shell script.
[ Hits: 11016 ]
Conceito: 10.0   2 voto(s)2 voto(s)2 voto(s)2 voto(s)2 voto(s) + quero dar nota ao artigo

O script

Boa pessoal!

Há alguns dias o departamento de contabilidade da empresa onde trabalho trouxe um problema até nós, eles necessitavam que determinadas linhas de um arquivo X fossem excluídas e a relação das linhas a serem apagadas estavam em um arquivo Y.

Logo, alguns pensaram em apagar manualmente e outros em criar complexos programas para realizar a tarefa. Tentei imaginar uma solução simples e rápida, que desobrigaria os usuários de realizar a penosa tarefa de apagar uma a uma as linhas do arquivo e nos livrar da complexidade de desenvolvimento e manutenção de um programa mais completo. A primeira coisa que me veio a cabeça foi criar um "Shell Script".

Bem, este é um programa bem simples, que além de servir a finalidade citada anteriormente, tem um propósito educacional. Para o pessoal que quer aprender "Shell Scripting", acredito que este seja um bom exemplo, pois fiz uso de vários recursos interessantes, como variáveis, passagem de parâmetros, loops, estruturas condicionais, "PIPEs" e expressões regulares, etc.

Eis o código:

#!/bin/sh
###################################################
# Line Delete
# (C) Copyleft 2005 Carlos "Null_Terminated" Andre
# null_terminated{no spam}linuxmail.org
# Usage: ./linedel.sh <lines> <data>
###################################################

TMP=${TMP:-/tmp}
BKP=`echo $2 | sed -e 's/\...*$//'`
WFILE=${TMP}/${BKP}$$
SCRPT=${TMP}/script$$

if [ $# -lt 2 ]; then
    echo "Usage $0 <lines> <data>"
    exit 1
fi

rm -f $SCRPT
for y in `cat $1`; do
    echo "${y}d" >> $SCRPT
done

cp $2 ${BKP}.bkp
cat $2 | sed -f $SCRPT >> $WFILE
cp $WFILE $2
rm -f $WFILE
rm -f $SCRPT
Próxima página >>




Páginas do artigo
   1. O script
   2. Destrinchando o código
   3. Considerações finais

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por agk em 14/03/2005 - 21:08h:

Muito bom, bastante interessante o script, e se eu quisesse apagar as linhas em branco de algum arquivo?

[2] Comentário enviado por fabio em 14/03/2005 - 22:21h:

Apagar linha em branco:

grep -v "^$" arquivo.txt > novo_arquivo.txt

[]'s

[3] Comentário enviado por removido em 03/02/2006 - 14:52h:

Qual o programa usado para a criação de Shell Scripting?



[4] Comentário enviado por skfk em 18/09/2006 - 20:19h:

Artigo de Mestre.. bem explicado.

[5] Comentário enviado por boxsti em 08/07/2010 - 23:17h:

muito legal, bem explicado e principalmente muito funcional....!!!!!
está de parabéns!!!!!


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.