GNU/Linux >> Linux の 問題 >  >> Linux

Linux –ファイル入力引数を使用したGnu並列ペア引数?

多くの行を含むファイルがあり、各行にタブ区切り文字と並行して渡す引数があります。

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

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

そして、それは機能します。$ hdd_fileはファイル名であり、grepはhddが特定の$ ssdを持つ行をキャッシュとして収集し、並列がそれらの接続を破棄する関数を呼び出します。

クリーンアップされた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`

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

承認された回答:

GNUparallel 解決策:

サンプル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
  • :::: argfilesargfilesを処理します 入力ソースとして。 ::: および:::: 混合することができます。

各入力ソースから要素を集約するには– --xapplyを追加します オプション:

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

出力:

a b 1
c d 2

Linux
  1. LinuxでGNUPartedを使用してドライブをパーティション分割する

  2. grep コマンドを使用して Linux で name=php.ini のファイルを検索する方法

  3. Swapon に失敗しました:Btrfs ファイルシステムを使用する Linux システムで引数が無効です

  1. Linuxでの入出力とエラーリダイレクトの操作

  2. Linuxでの並べ替えコマンドと例

  3. Linux/Unixでの入力/出力リダイレクト

  1. GNUParallelを使用してLinuxコマンドラインでより多くのことを行う

  2. Linuxgrepコマンド

  3. lsでLinuxファイルのパーミッションを確認する