Mise en forme d'une variable avec un fichier

stephbret56 Messages postés 195 Statut Membre -  
stephbret56 Messages postés 195 Statut Membre -
Bonjour,
Je suis à la recherche d’une façon de générée une variable à partir d’un fichier et de supprimer du fichier ce numéro qui et charger dans la variable je vous laisse le contenu du fichier :

Le fichier toto:
1 18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1071 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705

Ce que je veux comme résultat:

Contenu de la variable:
num=1

Le fichier toto après chargement de la variable:
18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1071 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705

Merci d’avance pour vos solutions

15 réponses

  1. blob37 Messages postés 3041 Statut Membre 343
     
    euh..tu devrais pas plutôt poster dans la section programmation ?
    0
  2. stephbret56 Messages postés 195 Statut Membre 6
     
    Non je ne pense pas tu n'a pas une petite idée j'aimerai intégrer la solution dans un script shell unix.

    A+
    0
  3. blob37 Messages postés 3041 Statut Membre 343
     
    mais si tu postes dans la section unix/linux tu vas t'adresser à des utilisateurs de linux ou unix par forcément des programmeurs , alors que peut être que dans le section programmation même si tu ne t'adresses pas à des "pro" unix/linux peut être que quelqu'un verra des ressemblance avec ce qu'il fait en dev.
    Enfin bon je donnais mon avis ;-)
    0
  4. stephbret56 Messages postés 195 Statut Membre 6
     
    Merci j'ai posté dans programation aussi .
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    lami20j@debserv:~$ cat toto
    1 18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1071 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705
    lami20j@debserv:~$ num=$(grep -Eo '(^|\b)1\b' toto);sed -i.orig 's/'$num' //' toto
    lami20j@debserv:~$ cat toto
    18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1071 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705
    lami20j@debserv:~$ echo $num
    1
    lami20j@debserv:~$ cat toto.orig
    1 18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1071 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705
    lami20j@debserv:~$
    
    
    0
  7. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Moi j'avais ça :
    [tmpfs]$ cat plop
    1 18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1071 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705
    
    [tmpfs]$ var="1"
    
    [tmpfs]$ sed "s/\b$var \b//" plop
    18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1071 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705
    
    [tmpfs]$ cat plop
    1 18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1071 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705
    
    [tmpfs]$ var="1071"
    
    [tmpfs]$ sed "s/\b$var \b//" plop
    1 18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705
    [tmpfs]$
    ;-))
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      oui, tu as raison ;-)
      je ne sais pas pourquoi je me suis compliqué avec grep ;-))
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        A cause de ça sûrement ;-))
        0
  8. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    donc
    num=1;sed -i.orig "s/\b$num \b//" toto
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Voui, moi aussi je sais pas pourquoi je suis allé m'embêter avec les "\b", sûrement un reste de l'autre post aussi ;-((

      Merchi à toi ;-))
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ;-)

        0
  9. stephbret56 Messages postés 195 Statut Membre 6
     
    Bonjour,

    J'ai fait le test suivant comme indiqué par contre j'ai le message suivant?

    la commande:
    num=$(grep -Eo '(^|\b)1\b' toto);sed -i.orig 's/'$num' //' toto

    grep: illegal option -- E
    grep: illegal option -- o
    Usage: grep -hblcnsviw pattern file . . .
    sed: illegal option -- i
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Re-

      Sous quelle plateforme est-tu ?
      Quelle version de "sed" (sed --version) ?
      0
  10. stephbret56 Messages postés 195 Statut Membre 6
     
    Comment puis je voir la version du sed?
    Unix sunos 5.8
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Comment puis je voir la version du sed?
      C'est marqué dans mon post précédent !
      sed --version

      Sinon, comme dis précédemment, tu n'as pas besoin de "grep", juste de "sed", comme ci-dessous :
      num=1; sed "s/\b$num \b//" fichier
      Si les chiffres recherchés sont uniques dans le fichier et si la suite de chiffres dans ledit fichier est croissante, tu n'as pas besoin des "\b" dans l'expression :
      num=1; sed "s/$num //" fichier
      :-))
      0
  11. stephbret56 Messages postés 195 Statut Membre 6
     
    Merci je n'avais pas compris le mécanisme des sed's j'ai fait le test et ca marche a merveille merci beaucoup c’est hyper sympas.

    Bonne journée à tous.
    0
  12. stephbret56 Messages postés 195 Statut Membre 6
     
    Re-moi je reviens vers vous car j'ai encore un ptit couac je ne sais toujours pas charger la variable automatiquement à partir du fichier qui contient les champs suivants :

    1 18 44 103 164 224 285 345 404 465 524 584 643 704 765 824 884 914 936 975 1035 1071 1131 1191 1252 1312 1372 1433 1493 1553 1613 1673 1733 1793 1853 1913 1972 2033 2092 2152 2212 2272 2287 2304 2366 2388 2410 2439 2463 2523 2584 2645 2705

    J’ai suivi vos conseilles mais dans votre exemple la variable num et chargé apriori manuellement et moi je recherche une astuce pour faire le chargement automatiquement????

    Comment faire?
    Le résultat doit être égal :
    1er passage num=1 <===chargement automatique par une commande que je connais pas pour le moment
    Puis on supprime le 1 du fichier

    2éme passage num=18 en auto
    Puis on supprime le 18 du fichier

    3éme passage num=44 .....etc
    Puis on supprime le 44 du fichier

    Merci d'avance.
    0
  13. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Re-

    Le but final c'est quoi ?

    Parce que si c'est pour passer chaque champ un par un du fichier et les supprimer, autant effacer le fichier, non ?

    Donc donnes davantage de détails sur la finalité des tenants et des aboutissants...

    C'est le même fichier ?

    ;-))
    0
  14. stephbret56 Messages postés 195 Statut Membre 6
     
    Oui c'est toujours le même fichier

    Non le fichier ne doit pas être effacé d'un coup le but c'est de le faire un par un.

    j'ai besoin d'une seule information c'est comment charger cette variable?
    0
  15. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    #! /bin/bash
    
    for i in $(cat fichier)
    do
    sed -i "s/$i//" fichier
    done
    ;-))
    0
  16. stephbret56 Messages postés 195 Statut Membre 6
     
    Merci beaucoup je test la manip demain.

    A+

    bonne soirée.
    0