Ich benutze oft Makefiles für die Automatisierung von Aufgaben, die ich wiederhole. Bei einer Aufgabe wird beispielsweise ein wachsendes Dataset nach Übereinstimmungen mit regulären Ausdrücken durchsucht. Angenommen, ich habe die folgenden zwei Textdateien, search1.txt
und search2.txt
:Simple Makefile zum Automatisieren paralleler grep gibt einen Fehler zurück
search1.txt
:
DSADJKBSDJSA
TEST1
DJKSABVDJSA
search2.txt
:
hvdsjhavdjshavdsa
dsadsadsadsa
TEST3djsabdjhsavdjhsa
TEST2dsajdbsahjdvsa
Hier ist meine Makefile suchen diese parallel mit GNU parallel.
.PHONY: search
search:
find search*.txt | parallel grep TEST1 {}
find search*.txt | parallel grep TEST2 {}
Als ich make search
laufen, die erste Zeile gibt die richtigen Daten und wirft dann einen Fehler und beendet wird, trotz der Tatsache, dass beide Linien auf ihre eigenen kompletten ganz gut läuft.
> make search
find *.txt | parallel grep TEST1 {}
TEST1
make: *** [search] Error 1
> find *.txt | parallel grep TEST1 {}
TEST1
> find *.txt | parallel grep TEST2 {}
TEST2dsajdbsahjdvsa
> parallel --version
GNU parallel 20160822
Ich kann nicht für das Leben von mir herauszufinden, was ich falsch mache. Es muss etwas Offensichtliches sein, aber ich habe dies auf ein so kleines einfaches Beispiel heruntergerechnet und ich bin immer noch verwirrt darüber, warum dies geschieht. Danke für jede Hilfe, die ich bekomme!