The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Indsæt flere linjer i en fil c0mrade Shell Programmering og Scripting 12 09-04-2008 05:04 PM
Tilføje flere linjer til flere filer dayinthelife Shell Programmering og Scripting 2 06-04-2008 12:50 PM
Sådan kopieres flere linjer fra en fil til en anden bruger AWK? jisha Shell Programmering og Scripting 3 01-08-2008 01:04 AM
Behovet for at slette flere linier i en fil. kangdom Shell Programmering og Scripting 6 10-16-2006 12:02 PM
Tilføj flere linjer i en eksisterende fil hkhan12 Shell Programmering og Scripting 5 09-08-2006 12:11 PM

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øg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 02-13-2008
dala dala is offline
Registreret Bruger
  
 

Join Date: Feb 2008
Stillinger: 7
hentes flere linjer på flere steder i en fil

Jeg har en fil, der indeholder følgende linjer:

første linje
anden linje
tredje linje
noget går her
noget andet går her
noget går her
første Line1
sekund line2
tredje Line3

Jeg har brug for at gå gennem den fil og hentes disse linjer og udskrive dem outputtet skal se sådan ud:

første linje
anden linje
tredje linje
første Line1
sekund line2
tredje Line3

Please hjælp mig med at få starte den. Jeg brugte mens løkken, men produktionen var ikke, hvad jeg vil have det.
  #2 (permalink)  
Old 02-13-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Redaktør ala Mode
  
 

Join Date: Feb 2007
Sted: Innsbruck, Østrig
Posts: 1.886
Hvordan ved du, hvilke linjer du ønsker, og som du ikke?

Lad os sige, du vil 3 linier, springe 3 linier, osv. Her er blot én måde (ved hjælp af GNU awk):

Code:
 awk '(int((FNR-1)/ 3))%2 == 0'  filename
  #3 (permalink)  
Old 02-14-2008
dala dala is offline
Registreret Bruger
  
 

Join Date: Feb 2008
Stillinger: 7
Citat:
Oprindeligt Indsendt af otheus View Post
Hvordan ved du, hvilke linjer du ønsker, og som du ikke?

Lad os sige, du vil 3 linier, springe 3 linier, osv. Her er blot én måde (ved hjælp af GNU awk):

Code:
 awk '(int((FNR-1)/ 3))%2 == 0'  filename
Thx otheus, at besvare dit spørgsmål, jeg bruger `grep" ^ første "«, da jeg fandt det jeg ville fortsætte og grep til "^ andet" ord og så videre.
  #4 (permalink)  
Old 02-14-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Redaktør ala Mode
  
 

Join Date: Feb 2007
Sted: Innsbruck, Østrig
Posts: 1.886
Citat:
Oprindeligt Indsendt af dala View Post
Thx otheus, at besvare dit spørgsmål, jeg bruger `grep" ^ første "«, da jeg fandt det jeg ville fortsætte og grep til "^ andet" ord og så videre.
Okay, så du kan bruge "egrep" for en mere interessant regulært udtryk:

Code:
egrep "^(first|second|third) " infile.txt
hvis det ikke virker, skal du bare bruge awk med næsten identiske syntaks:

Code:
awk "/^(first|second|third) /" infile.txt
  #5 (permalink)  
Old 02-14-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Sep 2006
Indlæg: 2.538
Citat:
Oprindeligt Indsendt af dala View Post
Please hjælp mig med at få starte den. Jeg brugte mens løkken, men produktionen var ikke, hvad jeg vil have det.
Code:
while  read -r line
do
    case $line in
        first*|second*|third* ) echo "$line";;
    esac 
done < "file"
  #6 (permalink)  
Old 02-14-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Redaktør ala Mode
  
 

Join Date: Feb 2007
Sted: Innsbruck, Østrig
Posts: 1.886
Citat:
Oprindeligt Indsendt af ghostdog74 View Post
Code:
while  read -r line
do
    case $line in
        first*|second*|third* ) echo "$line";;
    esac 
done < "file"
Der ser ud som det skal arbejde, men som jeg sagde, det grep / awk løsning ville være mere effektivt. Måske skulle du sætte "dobbelte anførselstegn omkring $ linje, som i:
Code:
case "$line" in
I ksh og bash, kan du også analysere de første ord fra resten:
Code:
case "${line%% *}" in
   first|second|third) echo "$line";;
esac
  #7 (permalink)  
Old 02-14-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Sep 2006
Indlæg: 2.538
Citat:
Oprindeligt Indsendt af otheus View Post
I ksh og bash, kan du også analysere de første ord fra resten:
Code:
case "${line%% *}" in
   first|second|third) echo "$line";;
esac
Code:
while read -r a b
do
 case $a in 
  ....
 esac
done
Closed Thread

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 12:44 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0