The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
sed consulta gopsman Programação Shell Script e 4 02-03-2009 02:41
E na consulta SQL Lindarella Programação Shell Script e 3 10-09-2006 04:43
Consulta Em awk raguramtgr UNIX para Dummies Perguntas & Respostas 1 08-27-2004 11:00
Consulta RPM silvaman UNIX & avançada para usuários experientes 1 08-15-2003 07:56

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 12-07-2006
grinder182533 grinder182533 is offline
Usuário
  
 

Join Date: Nov 2006
Lugares: 17
sed consulta

Tenho uma série de pastas / temp / a / temp / b / temp / c

Nas pastas a, b e c, tenho ficheiros
a1.txt ... ... .... a20.txt
b1.txt ... ... .... b40.txt &
c1.txt ... ... .... c60.txt

Cada arquivo tem o mesmo formato dos dados: --

Linha 1 AAAAA aaaa
Linha 2 BBB bbbbbb
Linha 3 cccc cccccc
Etc, etc

Preciso de escrever um sed script que irá percorrer todos os arquivos e formatar os dados, assim: --

Linha 1 AAAAA aaaa
Linha 2 do BBB
Linha 3 X bbbbbb
Linha 4 cccc cccccc
Etc, etc

Então, eu preciso inserir um CR / LF em linha 2 da posição 4,
criar uma nova linha 3, com uma constante texto (X) eo valor do que estava à direita do anterior Linha 2 (bbbbbb)
e mover as restantes linhas de uma linha para baixo.

Alguém pode ajudar por favor?
Não sei sed muito bem, e awk não em todos.
  #2 (permalink)  
Old 12-07-2006
blowtorch's Avatar
maçarico blowtorch is offline Forum Advisor  
Adepto
  
 

Join Data: dezembro 2004
Local: Singapura
Posts: 2.350
Será que isto funciona?
Código:
awk '{if(NR==2) print $1,"\nX",$2; else print}' filename > filename.new
mv filename.new filename
Executar este através de um circuito em cada arquivo.

Note que eu assumi que o texto de seus arquivos é como você está mostrando isso (exactamente o mesmo número e localização dos caracteres de espaço para ser específico). Mesmo que não seja você só precisa mudar um pouco o awk.
  #3 (permalink)  
Old 12-08-2006
anbu23 anbu23 is offline Forum Advisor  
Usuário
  
 

Join Date: Mar 2006
Local: Bangalore, Índia
Mensagens: 1.398
SED solução

Código:
cd /a
for file in *
do
    sed "2 s/\(...\).\(.*\)/\1\\
    X \2/" $file > tmp
    mv tmp $file
done
  #4 (permalink)  
Old 12-08-2006
grinder182533 grinder182533 is offline
Usuário
  
 

Join Date: Nov 2006
Lugares: 17
sed solução

Graças Anbu23
Quando eu postada ontem, simplificou o meu problema, pensando que eu poderia seguir a sua lógica, e aplicá-la para o meu problema real.
Na verdade, é linha 5 posição 32 antes que o CR / LF, deve ser inserido.
A nova linha 6 conterá fixos texto da posição 1 a 31, inclusive, (X)
e posição 32 a 34 da linha 5 será, desceu para as mesmas posições na linha 6.
Tentei
sed "5 s / \ (... \). \ (.* \) / \ 1 \ \
X \ 2 / '$ arquivo> tmp
mas esta continua a cair depois de 3 caracteres.

Tentei
sed "5 s / \ (............................. \). \ (.* \) / \ 1 \ \
X \ 2 / '$ arquivo> tmp
mas tenho um erro de sintaxe.
Espero que possa ajudar mais.
Obrigado
  #5 (permalink)  
Old 12-08-2006
anbu23 anbu23 is offline Forum Advisor  
Usuário
  
 

Join Date: Mar 2006
Local: Bangalore, Índia
Mensagens: 1.398
Anteriormente você disse que após a primeira, em alguns poucos chars linha tem de ser transferido para a próxima linha com X. Mas agora que você está dizendo que você precisa inicial char e X e restantes char em novos line.I não sou capaz de te arranjar.
Pode me dar exemplo?
  #6 (permalink)  
Old 12-08-2006
grinder182533 grinder182533 is offline
Usuário
  
 

Join Date: Nov 2006
Lugares: 17
sed exemplo

Oi Anbu23

input

Ref: 12345678 ^ M
Valor Data: 28-mai-2006 ^ M
Débito A / c: 54321235 - abcdef ^ M
Cliente: 100210547 - abcdef ^ M
Débito Valor: USD 9999999999,00 ^ M
Descrição: fio de Wxxxxxx ^ M
^ M
Taxa de Câmbio: 1,00000 M ^
etc etc

deverá transformar-se em

Ref: 12345678 ^ M
Valor Data: 28-mai-2006 ^ M
Débito A / c: 54321235 - abcdef ^ M
Cliente: 100210547 - abcdef ^ M
Débito Valor: 9999999999,00 ^ M
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx USD ^ M
Descrição: fio de Wxxxxxx ^ M
^ M
Taxa de Câmbio: 1,00000 M ^
etc etc

cortar & colar tem compensado a exibição acima,
mas a minha anterior linha 5 posição 31 é exacta.
Observe também que há lotes de registros em cada arquivo,
e todos têm que ser reformatado.
Muito obrigado novamente
Eu aprecio o seu apoio.
  #7 (permalink)  
Old 12-08-2006
cskumar cskumar is offline
Usuário
  
 

Join Date: Oct 2005
Lugares: 67
tente este um

awk '(if (match ($ 0, "dólares")) (print $ 1 $ 2 $ 3, "\ nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", $ 4) print $ 0)' arquivo> newfile

Espero USD virá só em débito Valor: campo.

Atenciosamente,
cskumar
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 07:10.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0