Remplacer ligne dans fichier
Fermé
Remek
-
15 nov. 2009 à 01:31
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 15 nov. 2009 à 08:44
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 15 nov. 2009 à 08:44
A voir également:
- Remplacer ligne dans fichier
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
6 réponses
mamiemando
Messages postés
33274
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2024
7 782
15 nov. 2009 à 01:37
15 nov. 2009 à 01:37
Ben pourtant c'est sed qui est le plus adapté à ton besoin. Un truc du genre :
Ensuite il suffit d'appliquer ton sed au bons fichiers et c'est plié.
Bonne chance
(mando@aldur) (~) $ cat plop.txt 1 2 3 4 5 bzbadbda vavaava 1 2 3 4 5 bzbadbda vavaava 1 2 3 4 5 bzbadbda vavaava 1 2 3 4 5 bzbadbda vavaava 1 2 3 4 5 bzbadbda vavaava 1 2 3 4 5 bzbadbda vavaava (mando@aldur) (~) $ sed -i 's/1 2 3 4 5/6 7 8/g' plop.txt (mando@aldur) (~) $ cat plop.txt 6 7 8 bzbadbda vavaava 6 7 8 bzbadbda vavaava 6 7 8 bzbadbda vavaava 6 7 8 bzbadbda vavaava 6 7 8 bzbadbda vavaava 6 7 8 bzbadbda vavaava
Ensuite il suffit d'appliquer ton sed au bons fichiers et c'est plié.
Bonne chance
Oui j'avais effectivement pense a faire ca, mais le probleme c'est que je n'ai jamais la meme liste de chiffres. Y-a-t'il un moyen de dire a SED de remplacer uniquement les lignes contenant "bzbadbda vavaava" dans ton exemple?
Merci pour le coup de pouce !
Merci pour le coup de pouce !
mamiemando
Messages postés
33274
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2024
7 782
15 nov. 2009 à 01:48
15 nov. 2009 à 01:48
Bah sed supporte les expressions régulières, donc après tu peux tout à fait généraliser le "1 2 3 4 5" en conséquence. Si tu me donnais un exemple d'un fichier et du résultat que tu souhaites obtenir, ce serait sans doute plus clair pour moi.
Bonne chance
Bonne chance
En gros pour etre plus clair, j'aimerais dire a SED de scanner mes fichiers et de remplacer toutes les lignes qui contiennent l'expression "liste des composants" par quelque chose d'autre.
Par exemple, si mon fichier est :
3 76 5 2 6 ! liste des composants
f g u e
ffh
23 65 87 ! liste des composants
dgfhhd
gh
48763 3456 ! liste des composants
j'aimerais pouvoir obtenir :
1 2 3 4 ! liste des composants
f g u e
ffh
1 2 3 4 ! liste des composants
dgfhhd
gh
1 2 3 4 ! liste des composants
Un grand merci encore !
Par exemple, si mon fichier est :
3 76 5 2 6 ! liste des composants
f g u e
ffh
23 65 87 ! liste des composants
dgfhhd
gh
48763 3456 ! liste des composants
j'aimerais pouvoir obtenir :
1 2 3 4 ! liste des composants
f g u e
ffh
1 2 3 4 ! liste des composants
dgfhhd
gh
1 2 3 4 ! liste des composants
Un grand merci encore !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jivef
Messages postés
927
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
12 novembre 2020
306
15 nov. 2009 à 03:39
15 nov. 2009 à 03:39
Bonjour,
En fait, tu peux utiliser les expressions régulières.
Tu as dans ton cas des lignes commençant par un chiffre, avec éventuellement un deuxième chiffre collé, puis un ou des espaces et d'autres chiffres , la séquence se terminant par !.
Ce serait quelque chose comme :
[0-9]*! liste des composants
donc avec sed : tu mettras comme argument
"/[0-9]*! liste des composants/1 2 3 4 ! liste des composants/g"
Donc quelque chose comme :
cat monfichier | sed -e "s/^[0-9]*! liste /1 2 3 4 ! liste/g" > monnouveaufichier
Est-ce que cela résoud ton problème ?
En fait, tu peux utiliser les expressions régulières.
Tu as dans ton cas des lignes commençant par un chiffre, avec éventuellement un deuxième chiffre collé, puis un ou des espaces et d'autres chiffres , la séquence se terminant par !.
Ce serait quelque chose comme :
[0-9]*! liste des composants
donc avec sed : tu mettras comme argument
"/[0-9]*! liste des composants/1 2 3 4 ! liste des composants/g"
Donc quelque chose comme :
cat monfichier | sed -e "s/^[0-9]*! liste /1 2 3 4 ! liste/g" > monnouveaufichier
Est-ce que cela résoud ton problème ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
15 nov. 2009 à 08:44
15 nov. 2009 à 08:44
Salut,
;-))
[tmpfs]$ cat plop 3 76 5 2 6 ! liste des composants f g u e ffh 23 65 87 ! liste des composants dgfhhd gh 48763 3456 ! liste des composants [tmpfs]$ sed -i.bak 's/.*\(! .*\)/1 2 3 4\1/' plop [tmpfs]$ cat plop 1 2 3 4! liste des composants f g u e ffh 1 2 3 4! liste des composants dgfhhd gh 1 2 3 4! liste des composants [tmpfs]$
;-))