The UNIX and Linux Forums  


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
ksh - ler o arquivo com os principais espaços Momi Programação Shell Script e 2 03-17-2008 03:02
Stripping principais espaços à direita justificada nome Marcia P UNIX para Dummies Perguntas & Respostas 2 02-28-2006 10:32
Removendo líder e os espaços de dados entre as tags em XML. jhmr7 UNIX para Dummies Perguntas & Respostas 2 05-18-2005 11:27
Descarne líder e os espaços em uma única variável com espaços incorporados shell jerardfjay Programação Shell Script e 6 03-07-2005 02:24
Liderar e os espaços sleepster Programação Shell Script e 7 10-29-2003 11:48

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 03-15-2008
lijojoseph lijojoseph is offline
Usuário
  
 

Join Date: Mar 2008
Posts: 6
remover principais espaços de uma linha

Oi amigos

Preciso de alguma ajuda,

Eu tenho um arquivo que tem o seguinte aspecto

TEMP 014637065 014637065 517502 517502 RTE
517502 517502 RTE
AWATER_TEST 12325 23563 588323 2323 5656 32385 23235635
ANOTHER_TEST 12 5433 FTHH 5653 833
ENSAIO 123 123 3235 5353 353 53 35 353 535 3
YTERS GJK JKLS

sempre que há um espaço levando em linha (aqui há um espaço no início da linha 2 e 6, que podem não ser visíveis em discussão), eu preciso remover isso e anexar à linha anterior. Isso significa que eu quero um arquivo de saída que parece
TEMP 014637065 014637065 517502 517502 RTE 517502 517502 RTE
AWATER_TEST 12325 23563 588323 2323 5656 32385 23235635
ANOTHER_TEST 12 5433 FTHH 5653 833
ENSAIO 123 123 3235 5353 353 53 35 353 535 3 YTERS GJK JKLS
  #2 (permalink)  
Old 03-15-2008
Franklin52 Franklin52 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2007
Mensagens: 4.333

Código:
awk '/^ /{print p $0; p=""; next}
p !~ /^ / && p {print p}
{p=$0}
END{if(!/^ /) {print}}
' file

Atenciosamente

Última edição por Franklin52; em 03/15/2008 07:34.. Motivo: modifation código
  #3 (permalink)  
Old 03-15-2008
lijojoseph lijojoseph is offline
Usuário
  
 

Join Date: Mar 2008
Posts: 6
Citação:
Originally Posted by Franklin52 View Post
Código:
awk '/^ /{print p $0; p=""; next}
p !~ /^ / && p {print p}
{p=$0}
END{if(!/^ /) {print}}
' file

Atenciosamente
Olá Franklin,
Tentei com a opção acima é dando erro de sintaxe para segunda linha
mensagens de erro são
*******
awk: erro de sintaxe próximo a linha 1
awk: bailing out perto da linha 1
*******
Tentei também com awk '/ ^ / p (print $ 0;) (próxima p \u003d $ 0) END (print)', mas aqui não vai considerar as linhas, sem um líder espaço

pls help

Última edição por lijojoseph; em 03/15/2008 09:12..
  #4 (permalink)  
Old 03-15-2008
Franklin52 Franklin52 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2007
Mensagens: 4.333
Utilize nawk / ou usr/xpg4/bin/awk no Solaris

Atenciosamente
  #5 (permalink)  
Old 03-15-2008
lijojoseph lijojoseph is offline
Usuário
  
 

Join Date: Mar 2008
Posts: 6
Smile

Frank,
graças um lote que está trabalhando perfeitamente com nawk.

Aqui também tenho um pequeno problema
se houver espaços levando em 2 linhas consecutivas, é não considerar o segundo um ..
que é
*** Arquivo de entrada
TEMP 014637065 014637065 517502 517502 RTE
517502 517502 RTE
226
AWATER_TEST 12325 23563 588323 2323 5656 32385 23235635
ANOTHER_TEST 12 5433 FTHH 5653 833
ENSAIO 123 123 3235 5353 353 53 35 353 535 3
YTERS GJK JKLS

se líder espaços existem nas linhas 2 e 3, em seguida, a saída deve ser parecida
TEMP 014637065 014637065 517502 517502 RTE 517502 517502 RTE 2634
AWATER_TEST 12325 23563 588323 2323 5656 32385 23235635
ANOTHER_TEST 12 5433 FTHH 5653 833
ENSAIO 123 123 3235 5353 353 53 35 353 535 3
YTERS GJK JKLS

Pode me ajudar pls?

Também você pode apenas explane awk-me o código, se tiver tempo
Mais uma vez, muito obrigado por ajudar youe
  #6 (permalink)  
Old 03-15-2008
Franklin52 Franklin52 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2007
Mensagens: 4.333
Tente este:


Código:
awk '
/^ /{p=p $0;next}
p{print p}
{p=$0}
END{print p}
' file

Explaination do código:

/ ^ / (P \u003d p $ 0;) próxima # Concatenar linhas que começam com um espaço com a linha anterior e ler próxima linha

Os próximos comandos efeito das outras linhas:

p (p) imprimir # Imprimir a linha anterior se definir
(p \u003d $ 0) # Conjunto p
END (print p) # Não há mais linhas, imprimir linha anterior (es)

Utilize nawk / ou usr/xpg4/bin/awk no Solaris

Atenciosamente
Closed Thread

Marcadores

Tags
solaris

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 06:58.


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