Sie müssen den Befehl zitieren:
cat test.sql | parallel -q --pipe sed s/\`//g
oder:
cat test.sql | parallel --pipe sed 's/\`//g'
zum Beispiel, wenn ich eine SQL-Datei wie 20GB haben, tut parallel Prozess schneller als nur sed
mit ?
Wahrscheinlich nicht. --pipe
ist langsam. Es erreicht maximal 500 MB/s. Aber --pipepart
maxes out bei etwa 1 GB/s pro Kern. Also auf einem 4-Core mit Hyperthreading (8 "Cores") kann ich 5 GB/s bekommen.
Dadurch wird die Größe der test.sql
durch die Anzahl der Kerne unterteilen, und übergeben volle Linie chunks dieser Größe zu sed
:
parallel --pipepart --block -1 -a test.sql sed 's/\`//g'
GNU Parallel wird ausgegeben auf der Platte puffern, so dass diese nun die Begrenzung sein kann Faktor. Dies ist mehr oder weniger, was passiert:
read test.sql
save processed output to /tmp
read processed output from /tmp
print to stdout
Wenn Sie nicht über die Reihenfolge ist egal - Sie vollen Linien nur wollen, dann können Sie die beiden mittleren save
und read
unter Verwendung --line-buffer
vermeiden (ab Version 20170822):
So vermeiden Sie die temporäre Speicherung der 20 GB, aber lesen Sie nur 20 GB von der Festplatte einmal und schreiben Sie 20 GB auf Standardausgabe.
Was möchten Sie tun? Neben einem Syntaxfehler sehe ich nicht das Problem, das Sie lösen möchten – hek2mgl
Ich versuche, das 'backtick' Symbol zu entfernen, indem ich' parallel - pipe sed' benutze, aber es funktioniert nicht –
Warum möchten Sie parallel verwenden dafür? – hek2mgl