GNU/Linux >> Tutoriels Linux >  >> Linux

xargs substitution de plus d'un argument

Je ne connais pas de xargs option qui fera cela, mais vous pouvez obtenir quelque chose de similaire avec une invocation de bash -c :

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

Notez que xargs ne fournit pas les lignes comme arguments, même si vous spécifiez -L . Vous voudrez peut-être utiliser -d pour spécifier que la nouvelle ligne sépare les éléments (gnu xargs uniquement, je crois). Comparez ce qui suit :

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

Convertir les nouvelles lignes en \nul terminateurs, puis utilisez 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. Lire ligne par ligne dans le script bash

  2. Serveur FTP sur une ligne

  3. imprimer le contenu de plusieurs fichiers dans une archive zip

  4. Conversion d'une jolie impression JSON en une seule ligne

  5. Comment grep les lignes qui ont plus qu'un nombre spécifique de caractères spéciaux

Passer les arguments de la ligne de commande au script Bash ?

Vérification des conditions d'une ligne dans le fichier Makefile ?

Comment dire à Xargs quel argument choisir ??

Zorin OS 15 plus beau et utile que jamais

Comment lier le serveur MySQL à plusieurs adresses IP ?

Pouvez-vous avoir plus d'un fichier ~/.ssh/config ?