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
fil sammenligning ... hjælpe nødvendigt. er_ashu UNIX for dummyer Spørgsmål & svar 4 05-15-2008 09:37 PM
Sammenligning Unix og Windows fil sysytem localp UNIX for dummyer Spørgsmål & svar 1 04-11-2008 04:02 AM
Outputformat - sammenligning med I / p fil velappangs Shell Programmering og Scripting 1 04-03-2008 06:31 AM
fil sammenligning script tiger99 Shell Programmering og Scripting 1 01-30-2008 10:47 AM
File Time Sammenligning Spørgsmål pc9456 UNIX for Advanced & Ekspertsøgning Brugere 2 07-23-2003 03:05 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 01-02-2008
net_shree net_shree is offline
Registreret Bruger
  
 

Join Date: Dec 2007
Stillinger: 8
Filsammenligning

Jeg er nødt til at sammenligne to tekstfiler, meget få af de strækninger i disse filer vil have en vis forskel i nogle kolonne.
De filer størrelse er i GB.
Sample linjer som nedenfor:
11111122222222333333aaaaaaaaaabbbbbbbbbccccccccdddddd
11111122222222333333aaaaaaaaaabbbbbbbbbccccccccddeddd

Så antager disse to linjer fra file1 og fil2 henholdsvis, jeg burde få den anden fil linje i et nyt outputfil som er forskellen fil.

Hvad jeg gerne vil gøre, er at læse Line1 fra file1 og loop gennem alle de linjer i fil2 og stop, når en kamp er fundet, ellers udskrive det, at linje til outputfil. Og gentage de samme trin for alle linjer fra file1.

Sætter pris på enhver hjælp i denne henseende.
  #2 (permalink)  
Old 01-02-2008
jim McNamara jim mcnamara is online now Forum Staff  
...@...
  
 

Join Date: Feb 2004
Beliggenhed: NM
Indlæg: 5.736
Hvad mener du med "stop, når en kamp er fundet", hvorefter du læse mere fra file1 ....
Ønsker du linjenummeret? Stop betyder normalt, at forlade læse sløjfe.
  #3 (permalink)  
Old 01-02-2008
net_shree net_shree is offline
Registreret Bruger
  
 

Join Date: Dec 2007
Stillinger: 8
Ja, jeg ønsker at forlade læs loop når en kamp er fundet, jeg ønsker ikke at kontrollere flere for denne linje.
Nej, jeg behøver ikke linjenummeret.
  #4 (permalink)  
Old 01-02-2008
dislusive dislusive is offline
Registreret Bruger
  
 

Join Date: Jan 2008
Beliggenhed: Pittsburgh, PA
Stillinger: 2
Hvis jeg har forstået, hvad du forsøger at gøre det rigtigt, her er en hurtig bash script.

Code:
#!/bin/bash

compareFile = "/path/to/file/to/compare.txt"
outputFile = "/path/to/outputFile.txt"

for filename in /some/dir/of/text/files/*.txt; do 
        
        numlines=`cat $filename | wc -l`
                
        for i in `seq 1 $numlines`; do 
                current=`cat $filename | head -$i | tail -1` 
 
                grep -q "${current}" ${compareFile} 
 
                if [ $? != 0 ]; then
                         #doesn't exist, append to $outputFile
                        echo "${filename}:${current}" >> ${outputFile} 
                fi
        done 
done
  #5 (permalink)  
Old 01-02-2008
net_shree net_shree is offline
Registreret Bruger
  
 

Join Date: Dec 2007
Stillinger: 8
Hej, Tak for den hurtige løsning og ser temmelig meget, hvad jeg ønsker.
Men jeg er ikke i stand til at køre dette script, jeg bruge ksh.
En af de fejl er "seq: kommandoen blev ikke fundet"
  #6 (permalink)  
Old 01-02-2008
dislusive dislusive is offline
Registreret Bruger
  
 

Join Date: Jan 2008
Beliggenhed: Pittsburgh, PA
Stillinger: 2
som seq (normalt er bosiddende i / usr / bin /)

Det er en individuel eksekverbare kommando; bør være en del af coreutils pakken, hvis du bruger Linux.

hvis den findes på dit system, ændre scriptet
seq \u003d "/ sti / til / seq"

derefter ændre for erklæring at bruge variabel: for i in `$ (seq) ...
  #7 (permalink)  
Old 01-02-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Sep 2006
Stillinger: 2521
Citat:
Oprindeligt Indsendt af dislusive View Post
Hvis jeg har forstået, hvad du forsøger at gøre det rigtigt, her er en hurtig bash script.

Code:
#!/bin/bash

compareFile = "/path/to/file/to/compare.txt"
outputFile = "/path/to/outputFile.txt"

for filename in /some/dir/of/text/files/*.txt; do 
        
        numlines=`cat $filename | wc -l`
                
        for i in `seq 1 $numlines`; do 
                current=`cat $filename | head -$i | tail -1` 
 
                grep -q "${current}" ${compareFile} 
 
                if [ $? != 0 ]; then
                         #doesn't exist, append to $outputFile
                        echo "${filename}:${current}" >> ${outputFile} 
                fi
        done 
done
Som nævnt af OP, filerne i GB. Jeg tror, der vil være nogle resultater forsinkelse. kun et gæt.
Også seq er ikke en standard kommando i nogle * nix OS. Derfor, hvis du vil bruge sløjfer at sløjfe over en tæller, et stykke tid loop kan anvendes i stedet. f.eks mens [$ num-le $ numlines]
Closed Thread

Bogmærker

Tags
linux

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:27 PM.


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