Forum Programmation.shell Xargs et passage d'arguments.

Posté par  .
Étiquettes : aucune
0
21
juil.
2005
Bonjour,


j'ai un script awk qui m'effectue un traitement et une liste de fichiers contenu dans un fichier liste_de_fichiers.txt pour les traiter tous je faisais cette commande:

$cat liste_de_fichiers.txt | xargs awk -f script.awk

mais j'avais un souci car seule le premier fichier contenu dans liste_de_fichiers.txt était traiter;

J'ai pu résoudre mon pb, est traiter tous les fichiers contenus dans liste_de_fichiers.txt par le biais de la commande :


$sort liste_de_fichiers.txt | xargs awk -f script.awk


liste_de_fichiers.txt contient un fichier par ligne et est de la forme :

/home/toto/file1.txt
/home/toto/file2.txt
/home/toto/file3txt
/home/toto/file4.txt etc...

Je voulais savoir pourquoi ma commande ne marche pas avec cat, mais fonctionne tres bien avec sort, puisqu'au fond elles donne en sortie a peu près la meme chose ?

Merci
  • # cat inutile

    Posté par  . Évalué à 5.

    xargs -n1 awk -f test.awk {} <liste_de_fichiers.txt

    man xargs pour comprendre:
    (extrait d'une page man sous aix):

    1. To use a command on files whose names are listed in a file, enter:

    xargs lint -a <cfiles

    If the cfiles file contains the following text:
    main.c readit.c

    gettoken.c

    putobj.c

    the xargs command constructs and runs the following command:
    lint -a main.c readit.c gettoken.c putobj.c

    (...)

    5. To construct a command that contains a specific number of arguments and to
    insert those arguments into the middle of a command line, enter:

    ls | xargs -n6 | xargs -I{} echo {} - some files in the directory

    If the current directory contains files chap1 through chap10, the output
    constructed will be the following:
    chap1 chap2 chap3 chap4 chap5 chap6 - some files in the directory

    chap7 chap8 chap9 chap10 - some file in the directory


    Détails sur l'option -n:

    -n Number Runs the Command parameter using as many standard input arguments as
    possible, up to the maximum specified by the Number parameter. The xargs command
    uses fewer arguments if:

    1. If the accumulated command line length exceeds the bytes specified by the
    -s Size flag.
    2. The last iteration has fewer than Number, but not zero, arguments
    remaining.

    Note: The -L, -I (Lowercase L), and -n flags are mutually exclusive;
    the last flag specified takes effect.
  • # Pour répondre a ta question ....

    Posté par  . Évalué à 2.

    Ici, sous aix avec ksh, en utilisant tes 2 lignes de commande, le cat et le sort donnent le même résultat : un seul fichier est traité (ce qui me parait normal).

    Je ne comprend pas non plus pourquoi il se comporterait différamment avec sort.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.