|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre actif
![]() Luis Inscription : avril 2006 Messages : 595 ![]() |
Bonsoir a tous,
j'ai un fichier avec des registres et pour un des champs je dois ajouter en fin de ligne une suite de lettre...mais voila je sais pas trop comment. Voici le fichier: Code :
le champ qui m'interesse est de =952 Dans l'exemple il se repete plusieurs fois dans le même registre.. Ça c'est normal. Donc je souhaite ajouter ceci $aidescat$bidescat a la fin de chaque champs =952 Ce qui donnerait (j'en orend 2 juste pour l'exemple): Code :
Code :
sed -i '/[0-9]\{9\} 952/s/\($a.*\)/\1\$aidescat$bidescat /g' Result.txt >salida.mrk Quelqu'un connait le truc? D'avance merci |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2011 Messages : 1 452 ![]() |
Salut,
Code :
sed '/^=952 / s/$/$aidescat$bidescat /' Result.txt >salida.mrk
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
20
|
|
|
#3 |
|
Membre actif
![]() Luis Inscription : avril 2006 Messages : 595 ![]() |
Bonjour
wha genial ça marche.. J'aimerais comprendre. Le caracter ^ signifie "position toi a la fin" et le fait de le placer devant le 952 ça revient a dire, positione toi a la fin du champs 952 ? Ça marche comme ça? |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2011 Messages : 1 452 ![]() |
Citation:
le caractère '^' placé en premier dans un motif comprenant une expression régulière signfie le début de la ligne. Donc dans ton cas, /^=952 / veut dire qu'on recherche une ligne commençant par le signe égale et suivi du nombre 952, lui même suivi d'un espace. Le caractère "$" (dollar) quant à lui, placé en fin d'un motif de recherche, signifie la fin d'une ligne, ce qui se traduit dans l'expression s/$/$aidescat$bidescat /, substituer (commande s), la fin de la ligne représentée par le signe $ (dollar) par le motif "$aidescat$bidescat ".
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
|
10
|
|
|
#5 |
|
Membre actif
![]() Luis Inscription : avril 2006 Messages : 595 ![]() |
Bonjour
a ben j'ai bien fait de poser la question. J'aurais certainement d'autres cas, comme par exemple isoler une partie et la remplacer par autre chose, et la...c'est pareil comment faire? L'exemple est le suivant: dans le nouveau fichier j'ai ceci: Code :
=952 \0$82.3$aAny inf.: 1997 Ed. 1998$aidescat$bidescat c'est a dire, ceci: \0$82.3 Code :
=952 $aAny inf.: 1997 Ed. 1998$aidescat$bidescat D'avance merci |
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé Sénior
![]() Inscription : janvier 2011 Messages : 1 452 ![]() |
Re-
Pour l'exemple je n'affiche que les lignes de ton fichiers commençant par "=952". Contenu de ton fichier : Code :
Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||||
|
|
10
|
|
|
#7 |
|
Membre actif
![]() Luis Inscription : avril 2006 Messages : 595 ![]() |
Oula ça se complique...
Alors ce que je comprends: Pour l'affichage c'est ok, ça je vois bien comment ça marche: p pour print surement Mais l'autre commande: Code :
sed -n '/^=952 /{s/\\0$[^$]*//p}' plop je suppose que {} c'est pour encapsuler une autre serie de commande. le s/ pour substitute \\0$ .. le premier slash c'est pour faire un escape n'est ce pas? [^$] ça je pige pas. et les // ça veut dire que tu remplace par rien. Ça marche bien, je clic sur resolu. Merci pour toutes les aides |
|
|
00
|
|
|
#8 | ||||||||
|
Expert Confirmé Sénior
![]() Inscription : janvier 2011 Messages : 1 452 ![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
Citation:
En fait le "^" placé entre crochets (les crochets permettent de regrouper des caractères), indique que le (ou les) caractère(s) qui le suive(nt), ne devront pas faire partie de la chaîne de caractères recherchée et par conséquent l'évaluation du motif s'arrêtera dès qu'un des caractères excluent sera rencontré. Donc on cherche aucun, un ou plusieurs caractères (*) sauf un dollar ($) Citation:
Citation:
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||||||||
|
|
10
|
|
|
#9 |
|
Membre actif
![]() Luis Inscription : avril 2006 Messages : 595 ![]() |
C'est de la folie sed... non?
J'adore. Merci pour tes explication, c'est super clair. Te te souhaite une bonne journée ! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com