GNU/Linux >> Znalost Linux >  >> Linux

xargs nahrazení více než jednoho argumentu

Nevím o xargs volba, která to udělá, ale něčeho podobného můžete dosáhnout vyvoláním bash -c :

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

Všimněte si, že xargs neposkytuje řádky jako argumenty, i když zadáte -L . Možná budete chtít použít -d určit, že nový řádek odděluje položky (pouze gnu xargs, věřím). Porovnejte následující:

$ 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>

Převeďte nové řádky na \nul terminátory, pak použijte 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. Jak rozdělit terminál na více než jeden „pohled“?

  2. Kontrola stavu jednoho řádku v Makefile?

  3. 6 Očekávejte příklady argumentů příkazového řádku skriptu

  1. Jak zřetězit více řádků výstupu do jednoho řádku?

  2. Převedení více řádků do jednoho řádku odděleného čárkou

  3. Zmatený s jednoduchou propustností dluhopisů nelze získat více než koncert

  1. Vykonat řadu příkazů jedním sudem?

  2. Jak svázat MySQL server s více než jednou IP adresou?

  3. Můžete mít více než jeden soubor ~/.ssh/config?