Sed...script shell

Résolu/Fermé
Utilisateur anonyme - 2 déc. 2011 à 11:24
 Utilisateur anonyme - 6 déc. 2011 à 17:21
Bonjour,






bonjour tout le monde,

encore une question avec sed, malgré qu il y ait deja pas mal de truc dispo...

donc dans mon fichier j'ai 4 lignes:
banane
tomate
concombre
poireau


je veux remplacer ces 4 lignes:

banane
tomate
concombre
poireau

par une ligne:

regime

je pensais que la commande sed suffirait
sed -i 's/banane\ntomate\nconcombre\npoireau/diet/g' monfichier
mais non, et je n'arrive pas a trouver une commande simple pour faire cela....
des idées?
-le problem vient de la non reconnaissance de \n dans la commande vous l'aurez compris..-

Merci :)
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
2 déc. 2011 à 11:32
Salut,

$ cat plop 
banane
tomate
concombre
poireau

$ sed -i.bak '/banane/,/poireau/c\régime' plop

$ cat plop 
régime

$

;-))
0
Utilisateur anonyme
2 déc. 2011 à 11:45
Très bien ca marche. Maintenant on complique.
-car mon problème c'est de faire du cherche/remplace en script shell sur plusieurs lignes-

J'ai dans mon fichier:
banane
tomate
concombre
poireau

et je veux dans mon fichier:
Les fruits
Les légumes

marchi!
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
2 déc. 2011 à 11:50
$ cat plop
blablabla
blabla
banane
tomate
concombre
poireau
bliblibli
blibli

$ sed  '/banane/,/poireau/c\Les fruits\nLes légumes' plop
blablabla
blabla
Les fruits
Les légumes
bliblibli
blibli

$ 

;-))
0
Utilisateur anonyme
2 déc. 2011 à 12:08
re marchi,
mais, ok ici l'exemple est pas super, mais si je veux, au lieu de dire entre les mots banane et poireau fait ci fait ca, mais dire exactement les lignes du style:
sed -i '/banane\ntomate\nconcombre\npoireau/c\régime\n encore' monfichier

mais ca ca ne marche pas....
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
2 déc. 2011 à 12:11
Rien compris ;-((

Merci de mettre des exemples CONCRETS AVANT => APRÈS !
0
Utilisateur anonyme
2 déc. 2011 à 12:17
alors:
$ sed '/banane/,/poireau/c\Les fruits\nLes légumes' plop
prend tout ce qui est entre banane et poireau et remplace par fruits et légumes.

maintenant je veux pas une commande qui dise "prend entre ca et ca"
mettons que le mots poireau apparaissent plusieurs fois je veux etre sur entre quoi et quoi ca prend
du coup je veux spécifier les lignes precisement par le texte, par exemple je veux remplacer exactement cette partie:
banane\ntomate\nconcombre\npoireau

qui visuelement est
banane
tomate
concombre
poireau

et la commande
sed -i '/banane\ntomate\nconcombre\npoireau/c\régime\n encore' monfichier

ne marche pas
0