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

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

Re: [shell-script] Copiar trecho de um arquivo para outro


From: opa
Subject: Re: [shell-script] Copiar trecho de um arquivo para outro
Date: Sat, 29 May 2004 23:31:31 -0300 hrN

O viktor detalhou bem.

Eu apenas complementaria com minhas preferências, para 
apresentar alguns detalhes que me ocorrem: 

1. Na linha:
echo ${CORTA:67:300} >>./$FIM
eu deixaria assim:
echo ${CORTA:67} >>./$FIM
é menos trabalho para o sofrido shell, que não vai precisar contar 
bytes duas vezes; depois de atingir o alvo, é tudo, até o final.

2. Ao invés de:
cat $ARQUIVO |\
while ... done
usaria:
while ... done<$ARQUIVO
com isso um programa a menos é usado, o próprio shell lê o arquivo.

Se fosse para fazer no tapa, na linha de comando mesmo, se entendi  
"ags_gallo" o que deseja, parece bastante simples, eu faria apenas:

cut -c67- arq1>arq2

É outra opção. Eu sempre gosto de ter muitas, embora só use uma de cada vez, 
que depende das circunstâncias do momento e das preferências à época. :)


---------------------------------------------------------------------
>From: Viktor Mota <address@hidden>
>Date: Sat, 29 May 2004 16:48:57 -0300
>
>Olá ags_gallo,
>
>sábado, 29 de maio de 2004, 15:36:20, você escreveu:
>
>a> Caros Amigos,
>
>a> Tenho 2 arquivo. No primeiro arquivo tenho a informação que quero para
>a> incluir no segundo. Sendo que os trecho que quero do primeiro arquivo
>a> encontra-se na coluna 67 (falo em coluna pois contei as colunas no
>a> VI),e tenho que copiar para o segundo arquivo e coloca-lo a partir da
>a> coluna 66. Gostaria de saber como faço tal procedimento.
>
>Pelo que entendi vamos la...
>
>ESSA É uma das formas possiveis de se fazer isso, devem existir 1001
>outras, estou enviando o script comentado para que vc possa entender o
>que ele esta fazendo ok.
>
>Essa  é  forma  de  expansão de variável para selecionar uma substring
>específica,  baseado  em  um  deslocamento  e comprmento de caracteres
>específicos. Tente escrever as seguintes linhas no bash:
>
>$ EXCLAIM=cowabunga
>$ echo ${EXCLAIM:0:3}
>cow
>$ echo ${EXCLAIM:3:7}
>abunga
>
>Esta  forma  de  cortar  strings  é bastante útil. Basta especificar o
>carcter  a  partir do qual iniciar e o comprimento da substring, todos
>separados por dois pontos.
>
>
>Agora um script para vc fazer o que ta querendo...
>
>INICIO DO Script corta.sh
>=========================================================================
>#!/bin/sh
>
># Definindo variaveis....
>
># Variavel ARQUIVO contem o nome do arquivo que vc vai ler
>ARQUIVO=nome_do_arquivo_original
>
># Variavel FIM contem o nome do arquivo que vc vai gerar com o script
># OBS, nao use o mesmo nome de arquivo que o original, ou vc vai perder os 
>dados dele
>FIM=nome_do_arquivo_destino
>
># Essa variavel deve ficar em branco.... estou apenas definindo-a
>CORTA
>
>#---------  FIM DAS VARIAVEIS ----------
>
>#limpa a tela... (eu gosto de tudo limpo)
>clear
>
>#AGORA VOU FALAR COM O SCRIPT <<<<<<<<<<
>#Gosto de poder mandar nos meus scripts... eles sempre me obedecem.
>
>#Scripty, de um cat no arquivo_original e eqto vc le cada linha
>#faça a cortagem de caracteres que nao me interessam...
>#apende  o  resultado da cortagem em cada nova linha da variavel CORTA
>#no arquivo destino, ahhhhhh, e se ele nao existir, crie-o, isto é uma
>#ordem :)
>
>cat $ARQUIVO |
>while read CORTA
>do
># Coloquei um valor grande 300, mas se for o caso aumente para
># um valor que lhe traga o fim da linha sem perder nada...
>echo ${CORTA:67:300} >>./$FIM
>
># Agora se vc quer escrever o resultado da cortagem a partir
># do 66 caracter, comente a linha echo anterior e descomente
># essa abaixo:
>#echo "  digite 66x espacos  " ${CORTA:67:300} >>./$FIM
>done
>
># Redundancia... estou apenas enviando uma sinalização de que o script
># chegou ao final....
>exit 0
>#=========================================================================
>FIM DO Script corta.sh
>
>Como disse existe 1001 outras maneiras de fazer o que vc quer, essa eh
>so  uma  e nao esta otimizada para performance... so para citar existe
>outras  formas  de  fazer  o  echo  digitando 66x o espaco... AINDA TO
>APRENDENDO  bash e essas coisas mais pesadas, deixo para os mestres da
>lista...
>
>Recomendo uma leitura nesses arquivos...
>http://200.179.165.6/~viktor/linux/bash-1.html
>http://200.179.165.6/~viktor/linux/bash-2.html
>http://200.179.165.6/~viktor/linux/bash-3.html
>
>[]s
>Viktor Mota
>address@hidden




reply via email to

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