Sed...script shell

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,



bonjour tout le monde,

encore une question avec sed, malgré qu il y ait deja pas mal de truc dispo...

donc dans mon fichier j'ai 4 lignes:
banane
tomate
concombre
poireau

je veux remplacer ces 4 lignes:

banane
tomate
concombre
poireau

par une ligne:

regime

je pensais que la commande sed suffirait
sed -i 's/banane\ntomate\nconcombre\npoireau/diet/g' monfichier
mais non, et je n'arrive pas a trouver une commande simple pour faire cela....
des idées?
-le problem vient de la non reconnaissance de \n dans la commande vous l'aurez compris..-

Merci :)

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    $ cat plop 
    banane
    tomate
    concombre
    poireau
    
    $ sed -i.bak '/banane/,/poireau/c\régime' plop
    
    $ cat plop 
    régime
    
    $

    ;-))
    0
    1. Utilisateur anonyme
       
      Très bien ca marche. Maintenant on complique.
      -car mon problème c'est de faire du cherche/remplace en script shell sur plusieurs lignes-

      J'ai dans mon fichier:
      banane
      tomate
      concombre
      poireau

      et je veux dans mon fichier:
      Les fruits
      Les légumes

      marchi!
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      $ cat plop
      blablabla
      blabla
      banane
      tomate
      concombre
      poireau
      bliblibli
      blibli
      
      $ sed  '/banane/,/poireau/c\Les fruits\nLes légumes' plop
      blablabla
      blabla
      Les fruits
      Les légumes
      bliblibli
      blibli
      
      $ 

      ;-))
      0
    3. Utilisateur anonyme
       
      re marchi,
      mais, ok ici l'exemple est pas super, mais si je veux, au lieu de dire entre les mots banane et poireau fait ci fait ca, mais dire exactement les lignes du style:
      sed -i '/banane\ntomate\nconcombre\npoireau/c\régime\n encore' monfichier

      mais ca ca ne marche pas....
      0
    4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Rien compris ;-((

      Merci de mettre des exemples CONCRETS AVANT => APRÈS !
      0
    5. Utilisateur anonyme
       
      alors:
      $ sed '/banane/,/poireau/c\Les fruits\nLes légumes' plop
      prend tout ce qui est entre banane et poireau et remplace par fruits et légumes.

      maintenant je veux pas une commande qui dise "prend entre ca et ca"
      mettons que le mots poireau apparaissent plusieurs fois je veux etre sur entre quoi et quoi ca prend
      du coup je veux spécifier les lignes precisement par le texte, par exemple je veux remplacer exactement cette partie:
      banane\ntomate\nconcombre\npoireau

      qui visuelement est
      banane
      tomate
      concombre
      poireau

      et la commande
      sed -i '/banane\ntomate\nconcombre\npoireau/c\régime\n encore' monfichier

      ne marche pas
      0