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
---------------------------------------------------------------------
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: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Links do Yahoo! Grupos