2016-07-18 7 views
0

Ich mache eine Datenvalidierung. Grundsätzlich habe ich eine Liste von Dateien und möchte sicherstellen, dass sie konsistent sind. Damit eine Datei konsistent ist, müssen sie der Anzahl der Vorkommen entsprechen.Dateiinhalt in Make überprüfen

Wenn beide übereinstimmen, möchte ich eine fertige Datei erstellen, damit ich nicht noch einmal überprüfen muss. Dies wird eine Routine in meinem Makefile zur Datenvalidierung sein.

Wie würde ich das machen?

+0

Meinst du, dass du eine Datei willst, die eine Liste enthält? Dateipaare, die konsistent sind? Oder dass Sie für jedes konsistente Dateipaar ('file.foo.txt',' output.foo.txt') eine solche Datei ('foo.done') wollen? – Beta

+0

Ich mache eine Validierungsprüfung. Es dauert sehr lange, um die Datei "file.foo.txt" zu generieren. output.foo.txt ist einfach zu generieren. Ich möchte vergleichen, ob file.foo.txt die gleiche Anzahl von "ValidId" hat. Wenn ja, dann weiß ich, dass meine Ergebnisse gut sind – NinjaGaiden

Antwort

2

Die Musterübereinstimmung % kann in mehreren Abhängigkeiten in der Regel verwendet werden. Man kann das verwenden, um die konsistenten Dateien zu verfolgen, so dass laufende make und korrigierende Fehler nur die noch nicht konsistenten Dateien überprüfen würden:

FILES=$(wildcard file.????.txt) 
RES_FILES=$(FILES:file.%=.result.%) 

all: $(RES_FILES) 

.result.%.txt: file.%.txt output.%.txt 
    if [ `grep -c ValidId < file.$*.txt` -eq \ 
     `wc -l < output.$*.txt` ]; then \ 
     touch [email protected] ; \ 
    fi 

clean: 
    @rm -f $(RES_FILES)