
Wie kann ich die Länge einer weitergeleiteten Eingabe überprüfen? Ich versuche:
echo "A" | xargs sh -c 'echo ${#$1}'
Auch:
echo "A" | xargs sh -c 'echo ${#\"$1\"}'
Basierend aufAntworten hier, für ein Nicht-Pipe-Beispiel.
Antwort1
Als@steve schrieb, verwenden Sie es einfach, wc -c
um die Anzahl der Bytes zu zählen. man wc
Weitere Optionen finden Sie unter.
echo
fügt eine neue Zeile an das Ende der Ausgabe an, weshalb Sie beim Zählen ein Zeichen mehr erhalten, als Sie vielleicht erwarten. Verwenden Sie printf
diese Option, um die Ausgabe strenger zu steuern.
Antwort2
Angenommen, Sie möchten den Befehl ausführen, wenn ein Argument kürzer als 2 ist:
seq 100 | parallel echo '{= length($_) >= 2 and skip =}'
Außerdem werden die Jobs parallel ausgeführt – einer auf jedem Kern.
NB: GNU Parallel ist nicht das Parallel in Moreutils.
GNU Parallel ist ein allgemeiner Parallelisierer und erleichtert die parallele Ausführung von Jobs auf derselben Maschine oder auf mehreren Maschinen, auf die Sie per SSH-Zugriff zugreifen können.
Wenn Sie 32 verschiedene Jobs haben, die Sie auf 4 CPUs ausführen möchten, können Sie die Parallelisierung ganz einfach durchführen, indem Sie auf jeder CPU 8 Jobs ausführen:
GNU Parallel startet stattdessen einen neuen Prozess, wenn einer fertig ist – wodurch die CPUs aktiv bleiben und Zeit gespart wird:
Installation
Aus Sicherheitsgründen sollten Sie GNU Parallel mit Ihrem Paketmanager installieren. Wenn GNU Parallel jedoch nicht für Ihre Distribution gepackt ist, können Sie eine persönliche Installation durchführen, für die kein Root-Zugriff erforderlich ist. Dies ist in 10 Sekunden erledigt, indem Sie Folgendes tun:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Weitere Installationsoptionen finden Sie unterhttp://git.savannah.gnu.org/cgit/parallel.git/tree/README
Erfahren Sie mehr
Weitere Beispiele:http://www.gnu.org/software/parallel/man.html
Sehen Sie sich die Einführungsvideos an:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Gehen Sie das Tutorial durch:http://www.gnu.org/software/parallel/parallel_tutorial.html
Melden Sie sich für die E-Mail-Liste an, um Unterstützung zu erhalten:https://lists.gnu.org/mailman/listinfo/parallel