Resultat commande recuperer un champ

Résolu
lemon -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je voudrais savoir comment faire pour récuperer un champ du résultat d'une commande.
Par exemple si je tape "ls -l fichier" et que je veux seulement recuperer la taille en octet du fichier, comment pourrais-je faire ?
Merci d'avance.

3 réponses

  1. Flachy Joe Messages postés 2303 Statut Membre 261
     
    Salut,
    Tu peut utiliser la commande grep avec des expressions régulières, pour ton exemple :
    ls -l fichier | grep -o "[0-9]* oct\." | grep -o "[0-9]*"


    Bon courage.
    0
  2. Utilisateur anonyme
     
    non, tu utilises
    stat --printf '+%s\n' fichier
    0
    1. Flachy Joe Messages postés 2303 Statut Membre 261
       
      Récupérer la taille du fichier n'était qu'un exemple, sa question est comment récuperer un champ du résultat d'une commande ?.
      0
    2. lemon
       
      Merci pour la réponse, effectivement la taille d'un fichier n'était qu'un exemple, ma quesiton était générale ;-).
      0
    3. Utilisateur anonyme
       
      «travailler sur des champs» suggère awk, plutôt que des pipes de grep.
      0
    4. lemon
       
      je vais comparer les deux ;-).
      0
  3. lemon
     
    Merci pour l'aide, ça marche ;-). Une dernière question, quand je lance la commande sur une ligne qui contient plusieurs champs numérique, la commande les affichent toutes, ligne par ligne.
    Comment je pourrais faire pour recuperer seulement la première ligne par exemple ? (ou bien la deuxième,...).
    0
    1. Flachy Joe Messages postés 2303 Statut Membre 261
       
      Rajoute un grep avec l'option -n pour numéroter les lignes, une expression rationnelle de plus pour n'afficher que celle que tu veux et un cut pour finalement enlever le numéro de ligne.
      exemple : taille en octet du 3e fichier du répertoire courant :
      ls -l ./ | grep -o "[0-9]* oct\." | grep  ".*" -n | grep ^3: | cut -d : -f 2
      0
    2. Utilisateur anonyme
       
      tu t'enfonces Flachy-Joe.
      0
    3. Flachy Joe Messages postés 2303 Statut Membre 261
       
      @qqchquicommenceparQ : Mais ça marche ;-) Si tu sait utiliser awk et que tu es capable de l'expliquer, n'hésite pas.
      0
    4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      Tout simplement :
      ls -l |  awk '{ print $5 }'

      Ou plus précisément :
       ls -l | awk 'NR==2 { print $5 }'
      Pour n'afficher que la ligne 2.
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      hello
      exemple : taille en octet du 3e fichier du répertoire courant :
      $ ls -l | awk '$5 && ++n==3 {print $5}'
      0