The UNIX and Linux Forums  
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
ksh - lese filen med ledende private momi Shell programmering og Skripting 2 03-17-2008 03:02
Stripping ledende private på høyre rettferdiggjøres navn Marcia P UNIX for Dummies Spørsmål og svar 2 02-28-2006 10:32
Fjerne ledende og etterfølgende mellomrom av data mellom kodene i XML. jhmr7 UNIX for Dummies Spørsmål og svar 2 05-18-2005 11:27
Strip ledende og etterfølgende mellomrom bare i et shell variabel med innebygd mellomrom jerardfjay Shell programmering og Skripting 6 03-07-2005 02:24
Ledende og etterfølgende mellomrom sleepster Shell programmering og Skripting 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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 03-15-2008
lijojoseph lijojoseph is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Innlegg: 6
fjerne ledende mellomrom fra en linje

Hei venner

Jeg trenger litt hjelp,

Jeg har en fil som ser ut som følger

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
TEST 123 123 3235 5353 353 53 35 353 535 3
YTERS GJK JKLS

når noen gang det er en ledende plass på linje (her er det en plass på startstreken av linje 2 og 6 som ikke er synlige i tråden), trenger jeg å fjerne det og legge til forrige linje. Dette betyr at jeg vil ha en output fil som ser ut som
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
TEST 123 123 3235 5353 353 53 35 353 535 3 YTERS GJK JKLS
  #2 (permalink)  
Old 03-15-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Bli Date: Feb 2007
Innlegg: 4312
Code:
awk '/^ /{print p $0; p=""; next}
p !~ /^ / && p {print p}
{p=$0}
END{if(!/^ /) {print}}
' file
Hilsen

Sist endret av Franklin52; 03-15-2008 kl 07:34.. Reason: modifation koden
  #3 (permalink)  
Old 03-15-2008
lijojoseph lijojoseph is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Innlegg: 6
Sitat:
Originally Posted by Franklin52 View Post
Code:
awk '/^ /{print p $0; p=""; next}
p !~ /^ / && p {print p}
{p=$0}
END{if(!/^ /) {print}}
' file
Hilsen
Hei Franklin,
Jeg prøvde med alternativet ovenfor det gir syntaksfeil for andre linjen
feilmeldinger
*******
awk: syntaksfeil nær linje 1
awk: bailing ut nær linje 1
*******
også jeg forsøkt med awk '/ ^ / (print P $ 0; neste) (p \u003d $ 0) END (print)' men her det ikke vil vurdere linjer uten en innledende mellomrom

pls hjelpe

Sist endret av lijojoseph; 03-15-2008 kl 09:12..
  #4 (permalink)  
Old 03-15-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Bli Date: Feb 2007
Innlegg: 4312
Bruk nawk eller / usr/xpg4/bin/awk på Solaris

Hilsen
  #5 (permalink)  
Old 03-15-2008
lijojoseph lijojoseph is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Innlegg: 6
Smile

Frank,
takk alot det fungerer perfekt med nawk.

her også jeg har et lite problem
hvis det er mellomrom i 2 etterfølgende linjer så er det ikke vurderer den andre ..
som er
*** Inndatafilen
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
TEST 123 123 3235 5353 353 53 35 353 535 3
YTERS GJK JKLS

hvis innledende mellomrom er det i linjene 2 og 3 så resultatet skal se ut
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
TEST 123 123 3235 5353 353 53 35 353 535 3
YTERS GJK JKLS

Kan du pls hjelpe?

Også kan du bare explane meg awk koden hvis du har tid
Igjen mange takk for youe hjelp
  #6 (permalink)  
Old 03-15-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Bli Date: Feb 2007
Innlegg: 4312
Prøv dette:

Code:
awk '
/^ /{p=p $0;next}
p{print p}
{p=$0}
END{print p}
' file
Forklaring av koden:

/ ^ / (P \u003d P $ 0; neste) # Sette sammen linjer som begynner med et mellomrom med forrige linjen og lese neste linje

Den neste kommandoer effekten de andre linjene:

p (print p) # Skriv den forrige linjen hvis angitt
(p \u003d $ 0) # Set p
END (print p) # Det er ikke flere linjer, utskrift forrige linje (r)

Bruk nawk eller / usr/xpg4/bin/awk på Solaris

Hilsen
Closed Thread

Hugseliste

Tags
solaris

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 10:50.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0