Bash : sed sur deux lignes consécutive

Fermé
MohEllayali Messages postés 10 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 4 avril 2010 - 29 mai 2009 à 00:45
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 29 mai 2009 à 19:59
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
A voir également:

7 réponses

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
29 mai 2009 à 01:35
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
MohEllayali Messages postés 10 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 4 avril 2010
29 mai 2009 à 11:45
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
29 mai 2009 à 11:49
Salut,

Voir dans la FAQ : SED - Le remplacement de variables
0
MohEllayali Messages postés 10 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 4 avril 2010
29 mai 2009 à 11:55
Salut,

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

Merci bcp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MohEllayali Messages postés 10 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 4 avril 2010
29 mai 2009 à 12:16
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
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
29 mai 2009 à 12:30
Il faut sans doute échapper les accolades \{ \}.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
29 mai 2009 à 19:59
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