ファイル入力パラメータを持つGNUパラレルペアパラメータ

ファイル入力パラメータを持つGNUパラレルペアパラメータ

複数行のファイルがあり、各行にはタブ区切り文字と並列に渡すパラメータがあります。

このスクリプトを実行します。

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

動作します。 $ hdd_fileはファイル名で、grepは特定の$ ssdがキャッシュされた行であるhddを収集し、並列に関数を呼び出して接続を破壊します。

これで、整理されたSSDに新しいパーティションがあるので、次のように並列を呼び出そうとします。

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

パイプからパラメータを取得して、指定された数字とペアにする必要がありますが、そうではありません。

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

私もこれを試しましたが、まだ動作しません。何らかの理由で {}:::+ が引数として渡されます。

答え1

牛に似た一種の栄養parallel解決策:

はいinput.txt(デモ用):

a   b
c   d
e   f

grep '^[ac]' input.txt入力ソースファイルと同様に、コマンド(またはパイプ)をシミュレートするために使用されます。


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

出力:

a b 1
a b 2
a b 3
c d 1
c d 2
c d 3

  • :::: argfiles-argfiles入力ソースとして扱われます。:::そして::::混合することができます。

各入力ソースの要素を集計する--xapplyオプションを追加します。

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

出力:

a b 1
c d 2

関連情報