The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Datei Vergleich ... Hilfe benötigt. er_ashu UNIX for Dummies Questions & Answers 4 05-15-2008 10:37 PM
Vergleich Unix-und Windows-Datei sysytem localp UNIX for Dummies Questions & Answers 1 04-11-2008 05:02 AM
Ausgabe-Format - im Vergleich mit der I / P-Datei velappangs Shell Programmierung und Scripting 1 04-03-2008 07:31 AM
Dateivergleich Skript tiger99 Shell Programmierung und Scripting 1 01-30-2008 10:47 AM
File Time Vergleich Anfrage pc9456 UNIX für Fortgeschrittene und Experten 2 07-23-2003 04: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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 01-02-2008
net_shree net_shree is offline
Registrierte Nutzer
  
 

Join Date: Dezember 2007
Beiträge: 8
Datei-Vergleich

Ich habe den Vergleich zweier Text-Dateien, nur sehr wenige der in diesen Dateien haben einige Unterschiede in eine Spalte.
Die Dateien, Größe in GB.
Beispiel sind wie folgt:
11111122222222333333aaaaaaaaaabbbbbbbbbccccccccdddddd
11111122222222333333aaaaaaaaaabbbbbbbbbccccccccddeddd

Also vorausgesetzt, diese beiden Zeilen aus datei1 und datei2 bzw., ich sollte die zweite Zeile in der Datei eine neue Datei, die Ausgabe ist der Unterschied Datei.

Was ich möchte ist, lesen line1 von Datei1 und Schleife durch alle Zeilen in datei2 und beendet werden, wenn eine Übereinstimmung gefunden wird, ansonsten drucken Sie es aus, dass die Zeile zu Ausgabedatei. Und wiederholen Sie die gleichen Schritte für alle Zeilen aus datei1.

Über jede Hilfe in dieser Hinsicht.
  #2 (permalink)  
Old 01-02-2008
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Ort: NM
Posts: 5762
Was meinen Sie mit "beendet werden, wenn eine Übereinstimmung gefunden wird", dann lesen Sie mehr aus Datei1 ....
Möchten Sie die Zeilennummer? Stop bedeutet normalerweise, zum Verlassen der Schleife lesen.
  #3 (permalink)  
Old 01-02-2008
net_shree net_shree is offline
Registrierte Nutzer
  
 

Join Date: Dezember 2007
Beiträge: 8
Ja, ich will zum Verlassen der Schleife lesen, wenn eine Übereinstimmung gefunden wird, möchte ich nicht mehr prüfen, für diese Zeile.
Nein ich brauche nicht die Zeilennummer.
  #4 (permalink)  
Old 01-02-2008
dislusive dislusive is offline
Registrierte Nutzer
  
 

Join Date: Jan 2008
Ort: Pittsburgh, PA
Beiträge: 2
Wenn ich verstehe, was Sie zu tun versuchen richtig, hier ist eine schnelle Bash-Skript.

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
Registrierte Nutzer
  
 

Join Date: Dezember 2007
Beiträge: 8
Hallo, Vielen Dank für die schnelle Lösung und sieht ziemlich genau, was ich will.
Aber ich bin nicht in der Lage, das Skript, ich ksh.
Einer der Fehler ist "seq: Befehl nicht gefunden"
  #6 (permalink)  
Old 01-02-2008
dislusive dislusive is offline
Registrierte Nutzer
  
 

Join Date: Jan 2008
Ort: Pittsburgh, PA
Beiträge: 2
die folgende (in der Regel in / usr / bin /)

Es ist eine einzelne ausführbare Befehl, sollte Teil des coreutils-Paket, wenn Sie Linux.

wenn es auf Ihrem System vorhanden ist, ändern Sie die Schrift
seq \u003d "/ pfad / zu / f"

dann ändern Sie die Erklärung für die Verwendung der Variablen zu: for i in `seq $ (...)
  #7 (permalink)  
Old 01-02-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Sep 2006
Posts: 2538
Zitat:
Zitat von dislusive View Post
Wenn ich verstehe, was Sie zu tun versuchen richtig, hier ist eine schnelle Bash-Skript.

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
Wie bereits erwähnt durch OP, die Dateien sind in GB. Ich glaube, es wird noch einige Performance-Verzögerung. nur eine Vermutung.
Auch seq ist kein Standard-Kommando in einigen * nix OS. Deshalb, wenn Sie Loops, dass Schleife über einen Zähler, eine while-Schleife verwendet werden. zB beim [$ num-le $ numlines]
Closed Thread

Lesezeichen

Tags
Linux

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 04:47 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0