Script shell

Résolu
bonjour ,
je veux faire une mise en forme pour des scripts que j'ai :

eliminer les espace:
supprimer les commentaire:
remplacer des variable par d'autre
exemple:
a partir du script suivant (c pa un script:) c du n importe quoi)

#hjnd
#!jdfj
if(#!ds) ddcf #hbdf
fdf
jhdv

obtenir le resultat suivant
if(#!ds) ddcf
fdf
jhdv

Remarque:
les commentaires commencent par # or je veux pa supprimer tt ce qui apres # parce que il y a des commande qui commance par # ( c bien exprimé dans l exemple cité ci dessus :D)

j attend votre reponse avec impatience
merci d avance
vraiment je suis bloqué
:d:d

3 réponses

  1. en faite j'ai utilisé la commande
    sed '/^ *#/d;s/#.*//' lundi.txt > lundi1.txt
    c utile , mais elle supprime tt ce qui est apres le #
    c adire
    a partir de ce script
    #hjnd
    #!jdfj
    if(#!ds) ddcf #hbdf
    fdf
    jhdv

    j 'ai obtenu
    if(
    fdf
    jhdv
    alors que c 'est pa ça ce que je veux

    je veux avoir com sortie le script suivant:

    if(#!ds) ddcf
    fdf
    jhdv

    dsl je repete trop , mé pr bien exprimer mon besoin
    :)
    0
    1. Modérateur
      Salut,

      $cat toto
      #hjnd
      #!jdfj
      if(#!ds) ddcf #hbdf
      fdf
      jhdv
      
      $sed -i '/^#/d' toto
      
      $cat toto
      if(#!ds) ddcf #hbdf
      fdf
      jhdv
      
      $

      ;-))
      0
      1. en faite , je l 'ai testé et ça marche pas

        l'erreur suivante s'affiche:
        sed: illegal option -- i
        0
      2. Modérateur
        Quelle système d'exploitation ?
        Quelle version de "sed" ?

        Sinon :

        sed '/^#/d' toto > tmp && mv -f tmp toto
        0
      3. et aussi je ve pas que le script resultat contiendra le commentaire #hbdf
        juste

        if(#!ds) ddcf
        fdf
        jhdv

        merci bcp pr ça
        et j attend vootre reponse :D
        0
      4. Modérateur
        sed '/^#/d;s/ #.*//' toto
        0
      5. merci bcp ,
        vous etes le meilleur
        0
    2. @mariam1990

      la commande
      sed '/^#/d;s/ #.*//' toto


      permet à la fois de
      - supprimer les lignes commençant par un # : /^#/d
      - supprime les commentaires en fin de ligne qui suivent un # : s/ #.*//

      Si j'ai tout suivi
      0
      1. Modérateur
        Salut,

        supprime les commentaires en fin de ligne qui suivent un # : s/ #.*//
        Supprime un commentaire et ce qui suit uniquement si le commentaire est précédé d'un espace.
        Ce qui évite de supprimer "#!ds) ddcf" dans la ligne "if(#!ds) ddcf ".

        ;-))
        0
      2. merci
        0