pour exmaple, en utilisant la commande
cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"
Le foo.txt
contient deux lignes
foo
bar
La commande ci-dessus n'imprime rien.
pour exmaple, en utilisant la commande
cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"
Le foo.txt
contient deux lignes
foo
bar
La commande ci-dessus n'imprime rien.
cat foo.txt | xargs -J % -n 1 sh -c "echo % | bar.sh"
La partie délicate est que xargs effectue l'invocation implicite de sous-shell. Ici, sh est invoqué explicitement et le tuyau ne devient pas la partie du convoyeur parent
cat foo.bar | wc -l
etcat foo.bar | xargs -J % -n 1 sh -c "echo % | wc -l"
-I
au lieu de-J
; il n'y a pas d'-J
option pour xargsxargs
have-J
est équivalente à celle-i
du linuxxargs
-J
n'est pas défini dans POSIX mais-I
est et a une utilisation différente de celle de GNU.)Si vous souhaitez traiter toutes les lignes de foo.txt, vous devrez utiliser une boucle. Utilisez
&
pour mettre le processus en arrière-planSi votre entrée contient des espaces, définissez temporairement le séparateur de champ interne sur la nouvelle ligne
la source
xargs
l'OP utilisé.