GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Gnu Parallel Pair Argument mit Dateieingabeargumenten?

Ich habe eine Datei mit vielen Zeilen, und in jeder Zeile habe ich die Argumente, die ich parallel mit einem Tab-Trennzeichen übergeben möchte.

Ich führe dieses Skript aus

cat $hdd_file | grep $ssd | parallel -C 't' clean_and_destroy

Und es funktioniert, $hdd_file ist der Dateiname, das grep sammelt die Zeilen, welche HDDs eine bestimmte $ssd als Cache haben, und dann ruft die Parallele eine Funktion auf, die ihre Verbindung zerstört.

Nachdem ich nun neue Partitionen zu den bereinigten SSDs erstellt habe, versuche ich, parallel so aufzurufen:

cat $hdd_file | grep $ssd | parallel -C 't' create_new_cache :::+ `seq $partitions_per_ssd`

Welches sollte die Argumente aus der Pipe holen und sie mit den angegebenen Zahlen paaren, tut es aber nicht.

cat $hdd_file | grep $ssd | parallel -C 't' create_new_cache ::: {} :::+ `seq $partitions_per_ssd`

Das habe ich auch probiert und es geht immer noch nicht. Die {} :::+ werden aus irgendeinem Grund als Argumente übergeben

Akzeptierte Antwort:

GNU parallel Lösung:

Beispiel input.txt (zur Demonstration):

a   b
c   d
e   f

grep '^[ac]' input.txt wird verwendet, um Befehle (oder Pipelines) zu emulieren, die sich wie eine Eingabequelldatei verhalten

parallel -C 't' echo :::: <(grep '^[ac]' input.txt) ::: $(seq 1 3)

Die Ausgabe:

a b 1
a b 2
a b 3
c d 1
c d 2
c d 3
  • :::: argfilesargfiles behandeln als Eingangsquelle. ::: und :::: kann gemischt werden.

Um Elemente aus jeder Eingabequelle zu aggregieren – fügen Sie --xapply hinzu Möglichkeit:

parallel -C 't' --xapply echo :::: <(grep '^[ac]' input.txt) ::: $(seq 1 2)

Die Ausgabe:

a b 1
c d 2

Linux
  1. Partitionieren Sie ein Laufwerk unter Linux mit GNU Parted

  2. Erledigen Sie mit GNU Parallel mehr über die Linux-Befehlszeile

  3. Arbeiten mit Eingabeausgabe und Fehlerumleitung in Linux

  4. Eingabe-/Ausgabeumleitung in Linux/Unix

  5. Swap fehlgeschlagen:Ungültiges Argument auf einem Linux-System mit Btrfs-Dateisystem

Linux-WC-Befehl mit Beispielen

Grep-Befehl in Linux (mit Beispielen)

Verwendung des Linux-mv-Befehls mit Beispielen

Sichern Sie Linux mit der Sudoers-Datei

Linux-Mount-Befehl mit Beispielen

gawk Linux-Befehl mit Beispielen