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– perlakukanargfilessebagai 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