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. @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
  2. 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
  3. 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