#!/bin/sh
for file1 in directorypath/*
do
for file2 in directorypath/*
do
if [ "$file1" = "$file2" ]; then
echo "files are same"
else
cp /dev/null /home/temp.txt
grep -f $file1 $file2 > /home/common.txt
grep -v -x -f /home/common.txt $file1 > /home/temp.txt
cp /dev/null $file1
cat /home/temp.txt >> $file1
cp /dev/null /home/temp.txt
grep -v -x -f /home/common.txt $file2 > /home/temp.txt
cp /dev/null $file2
cat /home/temp.txt >> $file2
fi;
done
done
Dieser Code funktioniert gut für Dateien kleiner Größe. Da ich große Textdateien verarbeiten muss, nimmt dieser Code selbst auf dem Server viel Zeit in Anspruch. Bitte helfen! Wie erreiche ich dasselbe effizient? Vielen Dank im Voraus.Wie werden nur einzelne Wörter aus einer Datei entfernt, die nicht mit anderen Wörtern in Dateien (zwei oder mehr Dateien) übereinstimmen?
Wenn ich Ihren Code richtig verstehen: 1 - Sie haben ein Verzeichnis von Dateien. 2 - Sie möchten jede Datei in eine Datei umwandeln, die nur für diese Datei eindeutige Wörter enthält. Interessieren Sie sich für die Implementierungssprache (würde es Ihnen etwas ausmachen, ein Python-Skript auszuführen? Möchten Sie die Reihenfolge der Wörter in der Datei beibehalten? – entropy
) Wie groß sind Ihre Dateien? ein Problem, um alle Dateien im Speicher auf einmal zu halten? – entropy
danke @entropy 1. Es gibt keine Einschränkung der Sprache, 2. Kein Problem der Bestellung auch. Ich habe fast 35 Textdateien jeweils 300 MB. Ich glaube nicht Es ist möglich, alle Dateien in den Speicher zu laden (nicht sicher) –