GNU/Linux >> Znalost Linux >  >> Linux

Linux – Gnu Parallel Pair Argument with File Input Argumenty?

Mám soubor s mnoha řádky a na každém řádku mám argumenty, které chci předat paralelně s oddělovačem tabulátoru.

Spustím tento skript

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

A funguje to, $hdd_file je název souboru, grep shromažďuje řádky, které mají hdd určitou hodnotu $ssd jako mezipaměť, a pak paralelka zavolá funkci, která zničí jejich spojení.

Nyní, když jsem vytvořil nové oddíly na vyčištěné ssd, zkouším volat paralelně takto:

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

Což by mělo získat argumenty z roury a spárovat je s danými čísly, ale ne.

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

Toto jsem také zkoušel a stále to nefunguje. {} :::+ jsou z nějakého důvodu předávány jako argumenty

Přijatá odpověď:

parallel GNU řešení:

Ukázka input.txt (pro ukázku):

a   b
c   d
e   f

grep '^[ac]' input.txt bude použit k emulaci příkazu (nebo potrubí) fungujícího jako vstupní zdrojový soubor

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

Výstup:

a b 1
a b 2
a b 3
c d 1
c d 2
c d 3
  • :::: argfiles – ošetřit argfiles jako vstupní zdroj. ::: a :::: lze míchat.

Chcete-li agregovat prvky z každého vstupního zdroje, přidejte --xapply možnost:

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

Výstup:

a b 1
c d 2

Linux
  1. Rozdělte disk na Linuxu pomocí GNU Parted

  2. Udělejte více na příkazovém řádku Linuxu s GNU Parallel

  3. Vykreslete soubor .gnu pomocí gnuplot

  1. Práce s Input Output a přesměrováním chyb v Linuxu

  2. Třídit příkaz v Linuxu s příklady

  3. Oprávnění souborů v Linuxu s příkladem

  1. Přesměrování vstupu/výstupu v Linuxu/Unixu

  2. Linuxový příkaz grep

  3. Zkontrolujte oprávnění souborů Linux pomocí ls