Saya memiliki file dengan banyak baris, dan pada setiap baris saya memiliki argumen yang ingin saya sampaikan paralel dengan pemisah tab.
Saya menjalankan skrip ini
cat $hdd_file | grep $ssd | parallel -C 't' clean_and_destroy
Dan berhasil, $hdd_file adalah nama file, grep mengumpulkan baris yang hdds memiliki $ssd tertentu sebagai cache, dan kemudian paralel memanggil fungsi yang menghancurkan koneksi mereka.
Sekarang saya membuat partisi baru ke SSD yang dibersihkan, saya mencoba memanggil paralel seperti ini:
cat $hdd_file | grep $ssd | parallel -C 't' create_new_cache :::+ `seq $partitions_per_ssd`
Yang seharusnya mendapatkan argumen dari pipa dan memasangkannya dengan angka yang diberikan, tetapi tidak.
cat $hdd_file | grep $ssd | parallel -C 't' create_new_cache ::: {} :::+ `seq $partitions_per_ssd`
Saya juga mencoba ini dan masih tidak berhasil. {} :::+ diteruskan sebagai argumen untuk beberapa alasan
Jawaban yang Diterima:
GNU parallel
solusi:
Contoh input.txt
(untuk demonstrasi):
a b
c d
e f
grep '^[ac]' input.txt
akan digunakan untuk meniru perintah (atau pipa) yang bertindak seperti file sumber input
parallel -C 't' echo :::: <(grep '^[ac]' input.txt) ::: $(seq 1 3)
Keluaran:
a b 1
a b 2
a b 3
c d 1
c d 2
c d 3
:::: argfiles
– perlakukanargfiles
sebagai sumber masukan.:::
dan::::
bisa dicampur.
Untuk menggabungkan elemen dari setiap sumber input – tambahkan --xapply
pilihan:
parallel -C 't' --xapply echo :::: <(grep '^[ac]' input.txt) ::: $(seq 1 2)
Keluaran:
a b 1
c d 2