2017-02-07 1 views
-4

Ich möchte eine Zeile zur Zeit einer Datei (file1.txt) auswählen und mit allen Zeilen einer anderen Datei (file2.txt) vergleichen und prüfen, ob es einen Eintrag für diese Zeile gibt oder nicht.Need Shell-Skript zum Vergleichen von Dateien

Ich habe zwei Dateien (file1.txt und file2.txt)
und auch Dateinamen, die in den Dateien auch im Verzeichnis gdir/db/Dateien vorhanden sind.

file1.txt 

/db/day_files/data_feed20161231 
/db/day_files/data_feed20161229 
/db/day_files/data_feed20161125 
/db/day_files/data_feed20161118 

file2.txt 
data_feed20161229 
data_feed20161125 

Req1: Zuerst müssen wir prüfen, ob die file1.txt und file2.txt Dateien im Verzeichnis GDIR präsentiert werden/db/Dateien oder nicht. Wenn eine der Dateien nicht vorhanden ist, zeigen Sie einfach die Nachricht file1.txt ist nicht vorhanden (oder) file2.txt ist nicht vorhanden (oder) file1.txt und file2.txt sind nicht vorhanden.

Req2: Lesen Sie die Dateinamen aus file1.txt (jeweils eine Zeile) und vergleichen Sie sie gegen alle (alle Zeilen) die Namen in der Datei Datei2.txt in einer Schleife. Und diese Schleife wird ausgeführt, einen Dateinamen gleichzeitig zu überprüfen.

a. Wenn der Dateiname übereinstimmt, wird diese Datei in den Pfad gdir/old/files verschoben und gibt den Wert 10 an eine Variable zurück und wird weiter ausgeführt, wenn mehr Dateinamen vorhanden sind. b. Wenn der Dateiname in der Liste nicht übereinstimmt, wird Wert 20 zurückgegeben und mit anderen fortgefahren.

Bitte helfen Sie mir. Vielen Dank im Voraus.

+1

Verwendung Linux 'diff' Befehl. wie - 'diff Datei1.txt Datei2.txt' – seal

Antwort

0
while read line; do 
    if grep -Fxq "$line" file-where-search.txt 
    then 
     # code if found 
    else 
     # code if not found 
    fi 
done <file-source.txt 

Pfad hinzuzufügen Verwendung String Dateiname:

"/path/to/file/$line" 

Um Pfad zu entfernen und nehmen nur Dateinamen verwenden

filename=`basename "/path/to/file/filename.ext"` 
Verwandte Themen