GNU/Linux >> Tutoriels Linux >  >> Linux

xargs séparés par une nouvelle ligne

Solution 1 :

GNU xargs (par défaut sous Linux ; installez findutils de MacPorts sur OS X pour l'obtenir) prend en charge -d qui vous permet de spécifier un délimiteur personnalisé pour l'entrée, de sorte que vous pouvez faire

ls *foo | xargs -d '\n' -P4 foo 

Solution 2 :

Quelque chose dans le sens de

alias myxargs='perl -p -e "s/\n/\0/;" | xargs -0'
cat nonzerofile | myxargs command

devrait fonctionner.

Solution 3 :

Avec Bash, je préfère généralement éviter les xargs pour tout ce qui est le moins délicat, au profit des boucles while-read. Pour votre question, while read -ar LINE; do ...; done fait le travail (n'oubliez pas d'utiliser la syntaxe de tableau avec LINE, par exemple, ${LINE[@]} pour toute la ligne). Cela ne nécessite aucune astuce :par défaut, la lecture utilise uniquement \n comme caractère de fin de ligne.

Je devrais poster une question sur SO à propos des avantages et des inconvénients de xargs par rapport aux boucles de lecture... c'est fait !

Solution 4 :

$ echo "1\n2 3\n4 5 6" | xargs -L1 echo  "#"
# 1
# 2 3
# 4 5 6

Linux
  1. Une vue pratique de la commande xargs

  2. Passage de plusieurs paramètres via Xargs ?

  3. Ny façon d'utiliser Xargs à travers un tuyau?

  4. 10 exemples de commandes Xargs sous Linux / UNIX

  5. Exemples de commandes xargs sous Linux

11 exemples de commandes Xargs sous Linux

Commande Xargs sous Linux

Exemples de commandes Linux xargs

Transférer SSH via un tunnel SSH

Comment s'évader ! en mot de passe ?

ajouter un mot de passe à .ssh/config