Bash : sed sur deux lignes consécutive

Bonjour,

Est ce possible d'appliquer la commande sed sur deux lignes consecutive ??
genre sed -e "s/motif_retour a la ligne_suite du motif/ motif de remplacement/g" fic1 >! fic2

Merci bien
Configuration: Windows Vista Internet Explorer 7.0

7 réponses

  1. Modérateur
    Ben a priori oui, vu que \n désigne un retour à la ligne (\r\n si c'est un fichier windowsien). Évidemment dans ton expression sed il faudra sûrement écrire \\n et \\r pour que ça fonctionne.

    Bonne chance
    0
    1. Salut mamiemando,

      T'avais raison, c'est possible !

      j'ai cependant un ptit probleme

      j'execute cette commande

      sed '/subckt/{N;s/\(^subckt $3.*\)\n+/\1 /g}' fic1 > ! fic2

      et cela dans le but d'obtenir

      au depart:
      subckt SDFFSLRLD2 CLOCK DATA Q QB RL SL TE TI Q1B Q1
      + N_Q2_M13_s N_Q2B_M14_d

      resultat souhaité:

      subckt SDFFSLRLD2 CLOCK DATA Q QB RL SL TE TI Q1B Q1 N_Q2_M13_s N_Q2B_M14_d

      quand j'execute
      sed '/subckt/{N;s/\(^subckt SDFFSLRLD2.*\)\n+/\1 /g}' fic1 > ! fic2 ca marche
      mais quand je fais
      sed '/subckt/{N;s/\(^subckt $3.*\)\n+/\1 /g}' fic1 > ! fic2
      ca ne marche plus
      car en réaliité le texte SDFFSLRLD2 je le recois en parametre d'un script

      donc ma question , comment utiliser des variables a l'interieur des accolades {} ??

      Merci d'avance
      0
      1. Salut,

        Merci, c'est ce que je cherchais , je vais eplucher ca

        Merci bcp
        0
        1. Salut,

          J'ai lu ton lien mais ca ne réponds pas au cas des accolades.
          c'est poas grave , je vais chercher sur le net
          0
          1. Modérateur
            Il faut sans doute échapper les accolades \{ \}.
            0
            1. Modérateur
              Bizarre que ça ne marche pas pour toi ;-\
              [tmpfs]$ cat fic1
              subckt SDFFSLRLD2 CLOCK DATA Q QB RL SL TE TI Q1B Q1
              + N_Q2_M13_s N_Q2B_M14_d
              
              [tmpfs]$ sed '/subckt/{N;s/\(^subckt SDFFSLRLD2.*\)\n+/\1 /g}' fic1
              subckt SDFFSLRLD2 CLOCK DATA Q QB RL SL TE TI Q1B Q1  N_Q2_M13_s N_Q2B_M14_d
              
              [tmpfs]$ set SDFFSLRLD2
              
              [tmpfs]$ echo $1
              SDFFSLRLD2
              
              [tmpfs]$ sed "/subckt/{N;s/\(^subckt $1.*\)\n+/\1 /g}" fic1
              subckt SDFFSLRLD2 CLOCK DATA Q QB RL SL TE TI Q1B Q1  N_Q2_M13_s N_Q2B_M14_d
              
              [tmpfs]$

              mamiemando => Non il ne faut pas échapper les accolades, dans ce cas là elles font parties intégrantes de la syntaxe de sed, elles servent à regrouper des commandes qui ne s'appliquent qu'au motif les précédent.
              0