Bash : sed sur deux lignes consécutive

MohEllayali Messages postés 11 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
  2. MohEllayali Messages postés 11 Statut Membre
     
    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
  3. MohEllayali Messages postés 11 Statut Membre
     
    Salut,

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

    Merci bcp
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. MohEllayali Messages postés 11 Statut Membre
     
    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
  6. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Il faut sans doute échapper les accolades \{ \}.
    0
  7. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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