Sed et insertion de ligne vide au-dessus dans un fichier

Résolu/Fermé
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 1 août 2023 à 11:19
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 1 août 2023 à 16:13

Bonjour,

Le contenu du fichier est :

Name|id|lc office
AP|AP|8
ATME|ATME.U|17
BEMS|BEPMS|3
BCI|BCI|937
etc..
WEB27|WEB3|25
Part|N visle|Ce ace
AP|AP|{3241,3178,341,340,551,109,3171,3243}
ATME|ATME.U|{2936,2389,528,3617,6026,669,3185,2376,3938,2819,3431,3173,252,3547,2990,2877,48}
etc..

Je souhaite ajouter une ligne vide au-dessus de "Part|N visle|Ce ace" pour que cela fasse :

Name|id|lc office
AP|AP|8
ATME|ATME.U|17
BEMS|BEPMS|3
BCI|BCI|937
etc..
WEB27|WEB3|25

Part|N visle|Ce ace
AP|AP|{3241,3178,341,340,551,109,3171,3243}
ATME|ATME.U|{2936,2389,528,3617,6026,669,3185,2376,3938,2819,3431,3173,252,3547,2990,2877,48}
etc..

J'ai essayé cela ci-dessous mais cela ne fonctionne pas!

sed -e '/WEB27/{x;p;x;}

Une idée?

Merci


A voir également:

4 réponses

jee pee Messages postés 40453 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 16 novembre 2024 9 417
Modifié le 1 août 2023 à 15:28

le \\ est bizarre mais en testant un classique \n (sur un linux lite bash) il ne fonctionnait pas mais dans mon environnement \\ oui

Si au départ tu as 2 fichiers, tu crées un fichier avec une ligne vide et tu concatènes les 3 fichiers

echo -e >vide.txt
cat test1.txt vide.txt test2.txt >test3.txt

1
jee pee Messages postés 40453 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 16 novembre 2024 9 417
Modifié le 1 août 2023 à 11:47

Bonjour,
 

***********  ajout après
sed '/^WEB27.*/a \\' test.txt

Name|id|lc office
AP|AP|8
ATME|ATME.U|17
BEMS|BEPMS|3
BCI|BCI|937
etc..
WEB27|WEB3|25

Part|N visle|Ce ace
AP|AP|{3241,3178,341,340,551,109,3171,3243}
ATME|ATME.U|{2936,2389,528,3617,6026,669,3185,2376,3938,2819,3431,3173,252,3547,2990,2877,48}
etc..

******** insertion avant
sed '/^Part|N .*/i \\' test.txt

Name|id|lc office
AP|AP|8
ATME|ATME.U|17
BEMS|BEPMS|3
BCI|BCI|937
etc..
WEB27|WEB3|25

Part|N visle|Ce ace
AP|AP|{3241,3178,341,340,551,109,3171,3243}
ATME|ATME.U|{2936,2389,528,3617,6026,669,3185,2376,3938,2819,3431,3173,252,3547,2990,2877,48}
etc..

0
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23
1 août 2023 à 13:34

Merci.

En fait  j'ai cela dans mon script bash :

sed -i '1iName|id|lc office' file1.csv | sed -i '1iPart|N visle|Ce ace' file2.csv

#Assemble les 2 fichiers en un seul puis insére une ligne vide au dessus de "Part|N visle|Ce ace" et redirection vers un troisième fichier
cat file2.csv >> file1.csv | sed -e '/^Part|N .*/i \\' file1.csv > file3.csv

Si je souhaite insérer une ligne vide avant 

Part|N visle|Ce ace

uniquement.j' ajoute ce que tu m'indiques dans mon script mais cela ne fonctionne pas.

sed -e '/^Part|N .*/i \\'

Une idée?


0
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23
1 août 2023 à 16:13

Merci, c'est OK.


0