OVH Cloud OVH Cloud

Comment insérer automatiquement un mot au debut d'une ligne et un autre mot à la fin de la même ligne.

17 réponses
Avatar
Guytou
Bonjour à tous,

J'aimerai savoir comment ajouter un mot au début d'une ligne et à la fin de
cette même ligne.
J'ai un fichier comportant une liste de nom de 200 tables ORACLE.

table_1
table_2
table_3
table_4
..........
table_200

J'aimerai insérer automatiquement au début de chaque ligne le mot "drop" .
Je veux aussi ajouter à la fin de chaque ligne un ";" (point virgule) pour
avoir ceci:

drop table_1 ;
drop table_2 ;
drop table_3 ;
drop table_4 ;
drop .......... ;
drop table_200 ;

Merci par avance de m'aider à résoudre mon problème.
J'ai des machines SUN et HP.

GUYTOU

7 réponses

1 2
Avatar
Guytou
Bonsoir Stephane,

Merci pour votre participation.
Vous m'aviez aidé à mieux comprendre le problème.
J'ai maintenant la solution.

Merci

Guy

"Stephane Chazelas" a écrit dans le message de
news:
2007-01-16, 09:35(+01), Olivier Miakinen:
^
Tiens, c'est vrai, je ne pense jamais au « & » comme synonyme de
« ».


est GNU specific (et n'est meme pas documenté dans la version
de GNU sed que j'ai). À eviter.


Ah ? Il me semblait que je l'utilisais déjà sur DPX/2 puis sur SunOS
entre 1987 et 1990. Et sur un SCO Unix par la suite, pour finir par AIX.
Note que j'utilise plus souvent les 1, 2, etc., mais je n'utilise
jamais le &.


n'a jamais été reconnu sous Solaris (a moins d'y utiliser le
GNU sed) ni sous AIX, AFAIK.

Pour 1, 2... c'est different et tout-a-fait standard (jusqu'a
9), c'est pour retourner les parties /capturees/ par (...)
comme dans s/foo(.*)bar/1/

--
Stéphane





Avatar
Guytou
Bonsoir à Tous,



vi lefichier<entrée>

:%s/.*/drop ;/<entrée>

:wq<entrée>



La vi utilisée ici pour insérer le mot "drop" au début de chaque ligne et un
point virgule à la fin, ne marche pas.

Voici ce qu'il me donne:



drop 0 ;

drop 0 ;

drop 0 ;

drop 0 ;

drop 0 ;

drop 0 ;

drop 0 ;



Les noms de mes tables sont remplacés par des 0.

Je devais avoir normalement ceci:



drop Table_1 ;

drop Table_2 ;

drop Table_3 ;

drop Table_4 ;

drop Table_5 ;

drop Table_n ;

............ ;

drop Table_200 ;



Cordialement,



GUYTOU


"Olivier Miakinen" <om+ a écrit dans le message de news:
45abcda6$

table_1

J'aimerai insérer automatiquement au début de chaque ligne le mot "drop"
.
Je veux aussi ajouter à la fin de chaque ligne un ";" (point virgule)
pour
avoir ceci:

drop table_1 ;


par exemple :

vi lefichier<entrée>
:%s/.*/drop ;/<entrée>
:wq<entrée>

Il y a des moyens avec sed ou awk également, mais dans ces cas là je
préfère le mode interactif (si le fichier ne compte pas des centaines
de milliers de lignes).



Avatar
Olivier Miakinen

Voici ce qu'il me donne:

drop 0 ;


Oui, c'est bien ce qu'il est ressorti de la discussion avec le gourou
Stéphane Chazelas. Utiliser « & » à la place de « ».

Cela dit, je profite de cette réponse pour te suggérer de lire
<http://www.faqs.org/faqs/fr/usenet/repondre-sur-usenet/>, qui
te permettra de citer de façon plus efficace et plus lisible.

Cordialement,
--
Olivier Miakinen

Avatar
Stephane Chazelas
2007-01-16, 15:31(+01), Olivier Miakinen:
[...]
Oui. C'est d'ailleurs ce que j'utilise dans 99,95 % des cas. Il est
rarissime que j'aie à rajouter du texte simultanément au début et à la
fin d'une ligne complète, et donc soit j'utilise les 1, 2, etc., soit
je remplace ^ par ce que je dois mettre au début ou $ par ce que je dois
mettre à la fin.


Mais & remplace la partie matchee, pas la ligne complete.

On peut faire par exemple:

sed 's,[][.^$*/],&,g'

Pour escaper les caracteres speciaux d'une BRE (+ /).

Ou

sed 's,http://[[:alnum:]./@:?&%~#_-]*,<a href="&">&</a>,g'

--
Stéphane

Avatar
Olivier Miakinen

Oui. C'est d'ailleurs ce que j'utilise dans 99,95 % des cas. Il est
rarissime que j'aie à rajouter du texte simultanément au début et à la
fin d'une ligne complète, et donc soit j'utilise les 1, 2, etc., soit
je remplace ^ par ce que je dois mettre au début ou $ par ce que je dois
mettre à la fin.


Mais & remplace la partie matchee, pas la ligne complete.


Mais oui, où avais-je la tête ? C'était bien sûr équivalent avec /.*/
mais pas dans le cas général. En tout cas j'espère que cet échange va me
permettre de me rappeler enfin que je peux utiliser & (et que je ferais
mieux de le faire) à la place de . Un grand merci à toi.


Avatar
Guytou
vi lefichier<entrée>
:%s/.*/drop ;/<entrée>
:wq<entrée>




La vi utilisée ici pour insérer le mot "drop" au début de chaque ligne et
un
point virgule à la fin, ne marche pas.




Oui, c'est bien ce qu'il est ressorti de la discussion avec le gourou
Stéphane Chazelas. Utiliser « & » à la place de « ».




Oui Olivier Miakinen, ça marche avec « & » à la place de « ».

Voici ce qu'il me donne:



drop Table_1 ;
drop Table_2 ;
drop Table_3 ;
drop Table_n ;
............ ...;
drop Table_200 ;



C'est le résultat que je voulais.

Grand merci



GUYTOU



"Olivier Miakinen" <om+ a écrit dans le message de news:
45ad199d$

Voici ce qu'il me donne:

drop 0 ;


Oui, c'est bien ce qu'il est ressorti de la discussion avec le gourou
Stéphane Chazelas. Utiliser « & » à la place de « ».

Cela dit, je profite de cette réponse pour te suggérer de lire
<http://www.faqs.org/faqs/fr/usenet/repondre-sur-usenet/>, qui
te permettra de citer de façon plus efficace et plus lisible.

Cordialement,
--
Olivier Miakinen



Avatar
Olivier Miakinen

Oui Olivier Miakinen, ça marche avec « & » à la place de « ».
[...]
C'est le résultat que je voulais.


C'est parfait.

Grand merci


Moi en revanche je ne te remercie pas encore car tu ne sembles pas avoir
lu une partie de ma réponse, puisque tu la cites sans y répondre :

Cela dit, je profite de cette réponse pour te suggérer de lire
<http://www.faqs.org/faqs/fr/usenet/repondre-sur-usenet/>, qui
te permettra de citer de façon plus efficace et plus lisible.



Voir en particulier les paragraphes 3.a et 3.b.


1 2