GNU/Linux >> Belajar Linux >  >> Linux

Linux - Argumen Pasangan Paralel Gnu Dengan Argumen Input File?

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 – perlakukan argfiles 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

Linux
  1. Partisi drive di Linux dengan GNU Parted

  2. Selesaikan lebih banyak di baris perintah Linux dengan GNU Parallel

  3. Bekerja dengan Input Output dan Error Redirection di Linux

  1. Urutkan Perintah di Linux dengan Contoh

  2. Pengalihan Input/Output di Linux/Unix

  3. Cara mencari file dengan name=php.ini di linux menggunakan perintah grep

  1. Perintah grep Linux

  2. Periksa izin file Linux dengan ls

  3. Swapon gagal:Argumen tidak valid pada sistem Linux dengan sistem file Btrfs