GNU/Linux >> Belajar Linux >  >> Linux

substitusi xargs lebih dari satu argumen

Saya tidak tahu tentang xargs opsi yang akan melakukan itu, tetapi Anda dapat mencapai sesuatu yang mirip dengan permintaan bash -c :

$ echo -e "line 1\nline    2\nline 3" | xargs bash -c 'echo "${@}" DONE' _
line 1 line 2 line 3 DONE

Perhatikan bahwa xargs tidak menyediakan baris sebagai argumen, meskipun Anda menetapkan -L . Anda mungkin ingin menggunakan -d untuk menentukan bahwa baris baru memisahkan item (hanya gnu xargs, saya percaya). Bandingkan yang berikut ini:

$ echo -e "line 1\nline    2\nline 3" |
  xargs bash -c 'printf "<%s>\n" "${@}" DONE' _
<line>
<1>
<line>
<2>
<line>
<3>
<DONE>

$ echo -e "line 1\nline    2\nline 3" |
  xargs -d\\n bash -c 'printf "<%s>\n" "${@}" DONE' _
<line 1>
<line    2>
<line 3>
<DONE>

Ubah baris baru menjadi \nul terminator, lalu gunakan xargs -0

$ echo -ne 'line 1\nline 2\nline 3\n' | tr '\n' '\0' | xargs -0 -Ix echo x DONE
line 1 DONE
line 2 DONE
line 3 DONE

Linux
  1. Temukan -exec + Vs Temukan | Xargs:Yang Mana Yang Harus Dipilih?

  2. Bagaimana Membagi Terminal Menjadi Lebih dari Satu "tampilan"?

  3. 6 Harapkan Contoh Argumen Baris Perintah Skrip

  1. Mengubah banyak baris menjadi satu baris yang dipisahkan koma

  2. Mengonversi cetakan cantik JSON menjadi satu baris

  3. Bingung dengan throughput ikatan yang sederhana, tidak bisa mendapatkan lebih dari satu Gig

  1. Cara grep baris yang memiliki lebih dari jumlah karakter khusus tertentu

  2. Bagaimana cara mengikat server MySQL ke lebih dari satu alamat IP?

  3. Bisakah Anda memiliki lebih dari satu file ~/.ssh/config?