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
Flett linjer i en anypager Shell programmering og Skripting 7 05-22-2008 03:20
hentes flere linjer på flere steder i en fil dala Shell programmering og Skripting 8 03-14-2008 03:28
flette 2 filer (uten å gjenta alle linjer) bluemoon1 Shell programmering og Skripting 9 10-25-2007 10:31
fusjonere flere linjer fra flat fil hnhegde Shell programmering og Skripting 4 12-05-2006 07:13
Flett innpakket linjer braindrain Shell programmering og Skripting 1 07-25-2005 07:03

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 08-07-2006
xb88 xb88 is offline
Registrert bruker
  
 

Bli Dato: Aug 2006
Innlegg: 7
Bruk sed å slå sammen flere linjer

Hei alle sammen:

Jeg har en fil der innholdet er som følgende:

...
Dette er en test
ONE
TWO
Hei, verden!
XXX YYY CCC
test igjen
tre, fire
fem
seks
syv
verden
AAA BBB QQQ
test
Ã¥tte, ni
verden
FFF EEE KKK
...

Jeg vil bruke sed å slå sammen alle linjene mellom en linje som inneholder ordet "test" og en linje som inneholder ordet 'verden' i én linje, og ignorere andre linjer. Med andre ord, jeg vil ha et resultat som følgende:

Dette er en test ONE TWO Hei, verden!
teste på nytt tre, fire fem seks syv verden
test åtte, ni verden


Alle hjelpe er verdsatt. Takk på forhånd for hjelpen!

Vennlig hilsen
Susan
  #2 (permalink)  
Old 08-07-2006
System Shock's Avatar
System Shock System Shock is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: mai 2006
Sted: Tau Ceti V
Innlegg: 521
Vel, får slags vanskelige på grunn av vilkårlig antall linjer mellom "test" og "verden", pluss vilkårlig antall Ines mellom "verden" og "test" ...
., .. noen smartere enn meg vil nok gi deg et bedre svar, men dette fungerer
Code:
 sed 's/$/ @/' file.txt | sed -n '/test/,/world/p' | sed '/world/G' | sed -e :a -e '/@$/N; s/\@\n//; ta'

Sist endret av System Shock, 08-07-2006 klokka 11:57..
  #3 (permalink)  
Old 08-08-2006
vish_indian vish_indian is offline
Registrert bruker
  
 

Bli Dato: juni 2006
Beliggenhet: Delhi, India
Innlegg: 92
Sitat:
Originally Posted by xb88
Med andre ord, jeg vil ha et resultat som følgende:
Dette er en test ONE TWO Hei, verden!
teste på nytt tre, fire fem seks syv verden
test åtte, ni verden
Awk kan gjøre det.

Code:
awk '/test/,/world/{ if($0~/world/) ORS="\n"; else ORS=" "; print}' filename
Sample output:
Dette er en test ONE TWO Hei, verden!
teste på nytt tre, fire fem seks syv verden
test åtte, ni verden
  #4 (permalink)  
Old 08-08-2006
xb88 xb88 is offline
Registrert bruker
  
 

Bli Dato: Aug 2006
Innlegg: 7
Takk til både System Shock og vish indian! Det virker det ikke finnes noen enkel metode for sed å gjøre det. Jeg må bruke awk, perlEller noe annet ...
Closed Thread

Hugseliste

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 PÃ¥
Smilefjes er PÃ¥
[IMG] koden PÃ¥
HTML-koden Av
Pingbacks er PÃ¥
Refbacks er PÃ¥




Alle klokkeslett er GMT -4. NÃ¥ er klokken 09:57.


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