The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
bestand vergelijking ... hulp nodig. er_ashu UNIX voor Dummies Questions & Answers 4 05-15-2008 09:37 PM
Vergelijking tussen Unix en Windows-bestand sysytem localp UNIX voor Dummies Questions & Answers 1 04-11-2008 04:02
Output formaat - vergelijking met de I / P-bestand velappangs Programmeren en Shell Scripting 1 04-03-2008 06:31
bestand vergelijking script tiger99 Programmeren en Shell Scripting 1 01-30-2008 10:47
Bestand Tijd Vergelijking Vraag pc9456 UNIX for Advanced & Expert Gebruikers 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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 01-02-2008
net_shree net_shree is offline
Geregistreerde gebruiker
  
 

Join Date: december 2007
Posten: 8
Bestand Vergelijking

Ik heb te vergelijken twee tekstbestanden, zeer weinig van de regels in deze bestanden hebben sommige verschil in enkele kolom.
De bestanden grootte in GB.
Monster lijnen zijn als volgt:
11111122222222333333aaaaaaaaaabbbbbbbbbccccccccdddddd
11111122222222333333aaaaaaaaaabbbbbbbbbccccccccddeddd

Dus de veronderstelling dat deze twee lijnen zijn uit bestand1 en bestand2 respectievelijk, ik zou u de tweede bestand lijn in een nieuwe productie-bestand dat is het verschil bestand.

Wat ik zou willen doen, is te lezen Lijn1 uit bestand1 en lus door alle lijnen in bestand2 en stopt als er een match is gevonden, anders print hij die lijn naar output bestand. En herhaal deze stappen voor alle lijnen van bestand1.

Waardeer alle hulp op dit gebied.
  #2 (permalink)  
Old 01-02-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Locatie: NM
Berichten: 5.728
Wat bedoel je met "stoppen wanneer er een match is gevonden", dan lees je meer uit bestand1 ....
Wil je de lijn? Stoppen betekent meestal om het lezen lus.
  #3 (permalink)  
Old 01-02-2008
net_shree net_shree is offline
Geregistreerde gebruiker
  
 

Join Date: december 2007
Posten: 8
Ja, ik wil om het te lezen lus wanneer een match wordt gevonden, ik wil niet te controleren meer voor die lijn.
Nee ik hoef niet de lijn nummer.
  #4 (permalink)  
Old 01-02-2008
dislusive dislusive is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Locatie: Pittsburgh, PA
Posten: 2
Als ik begrijp wat je probeert te doen correct, hier is een snelle 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
Geregistreerde gebruiker
  
 

Join Date: december 2007
Posten: 8
Hallo, Bedankt voor de snelle oplossing en ziet er veel wat ik wil.
Maar ik ben niet in staat te lopen dit script, ik gebruik ksh.
Een van de fouten "volgende: command not found"
  #6 (permalink)  
Old 01-02-2008
dislusive dislusive is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Locatie: Pittsburgh, PA
Posten: 2
die volgende (gewoonlijk verblijft in / usr / bin /)

Het is een individuele uitvoerbare commando; moeten deel uitmaken van de coreutils pakket als u linux.

indien aanwezig op uw systeem, wijzigen van het script
volgende \u003d "/ pad / naar / volgende"

vervolgens voor het wijzigen van de verklaring voor het gebruik van de variabele: for i in `$ (volgende) ...
  #7 (permalink)  
Old 01-02-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: Sep 2006
Berichten: 2518
Citaat:
Oorspronkelijk geplaatst door dislusive View Post
Als ik begrijp wat je probeert te doen correct, hier is een snelle 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
Zoals OP, de bestanden zijn in GB. Ik denk dat er zal worden sommige prestaties vertraging. gewoon een gok.
Ook volgende is niet een standaard commando in sommige * nix OS. Als u gebruik wilt maken van lussen die lus over een teller, een tijdje lus kan worden gebruikt. bv terwijl [$ num-le $ numlines]
Closed Thread

Bladwijzers

Labels
linux

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 12:36 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0