Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/12/2011, à 11:33

Hizoka

[resolu] Remplacer une plage de texte par une autre

Bonjour,

je voudrais remplacer une plage de texte par une autre dans un fichier.

Exemple :

var="  * Super\n  * Trop bien\n  * ca passe"

fichier à modifier :

mkv-extractor-gui (4.6.6-0ppa5~oneiric) oneiric; urgency=low

  * Petites modifications d'icones
  * Remplacement de l'icone de selection par une coche
  * Ajout d'un menu forçant la langue à utiliser
  * Ajout du support des videos/audios pour les fichiers joints

 -- Hizoka <hizo@free.fr>  Wed, 23 Nov 2011 10:29:42 +0100

mkv-extractor-gui (4.6.2-0ppa1~oneiric) oneiric; urgency=low

  * ...

nouveau fichier :

mkv-extractor-gui (4.6.6-0ppa5~oneiric) oneiric; urgency=low

  * Super
  * Trop bien
  * ca passe

 -- Hizoka <hizo@free.fr>  Wed, 23 Nov 2011 10:29:42 +0100

mkv-extractor-gui (4.6.2-0ppa1~oneiric) oneiric; urgency=low

  * ...

alors j'arrive à selectionner les lignes contenues entre les premiers espaces avec awk :

awk -v OCC=2 'BEGIN{ RS="" } NR==OCC'

mais je n'arrive pas à utiliser awk malgre mes efforts, trop dur...

une idée pour awk ? ou avec autre chose, le tout en bash.

merci

Dernière modification par Hizoka (Le 03/12/2011, à 02:33)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2 Le 02/12/2011, à 12:45

pingouinux

Re : [resolu] Remplacer une plage de texte par une autre

Bonjour,

Voici qui devrait convenir, en une seule ligne de awk :

awk -v OCC=2 -v var="  * Super\n  * Trop bien\n  * ca passe" 'BEGIN{ OLDRS=RS;RS="" } NR==OCC {printf("\n%s\n\n",var);RS=OLDRS} NR!=OCC' fichier

En ligne

#3 Le 02/12/2011, à 15:43

Haleth

Re : [resolu] Remplacer une plage de texte par une autre

Avec sed :

sed s/origine/resultat/g

Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#4 Le 02/12/2011, à 16:55

sputnick

Re : [resolu] Remplacer une plage de texte par une autre

Salut Hizoka san,

tu précise pas assez tes contraintes.

Si tu connait le "range" de lignes :

sed '3,6c\
  * Super\
  * Trop bien\
  * ca passe\
' FICHIER

ou avec ed :

ed -s FICHIER <<EOF
3,6c
foo
bar
base
.
,p
EOF

Merci à geirha pour son aide.

Dernière modification par sputnick (Le 02/12/2011, à 17:00)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#5 Le 03/12/2011, à 00:40

Hizoka

Re : [resolu] Remplacer une plage de texte par une autre

sputnick => non je ne connais pas les lignes (trop facile sinon wink ), ni leur nombre.
je sais juste qu'ils sont placés entre les 2 premières lignes vides et que la 1ere ligne de texte est à la 3eme.
je ne connaissais pas ed.

Haleth => pas possible, sinon je l'aurais fait...

pingouinux => nickel !
juste un question, awk a-t-il une commande pour sauvegarder directement le fichier modifié ? ou faut il faire une redirection ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#6 Le 03/12/2011, à 00:47

pingouinux

Re : [resolu] Remplacer une plage de texte par une autre

Hizoka #5 a écrit :

juste un question, awk a-t-il une commande pour sauvegarder directement le fichier modifié ? ou faut il faire une redirection ?

À ma connaissance, il faut rediriger la sortie sur un autre fichier.

En ligne

#7 Le 03/12/2011, à 01:45

Mpok

Re : [resolu] Remplacer une plage de texte par une autre

Hizoka a écrit :

pingouinux => nickel !

Comme souvent… smile

Hors ligne