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

Résolu
pcsystemd Messages postés 734 Statut Membre -  
pcsystemd Messages postés 734 Statut Membre -

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


L'accès au savoir est la première liberté que chaque homme devrait avoir.

4 réponses

  1. jee pee Messages postés 31966 Date d'inscription   Statut Modérateur Dernière intervention   10 010
     

    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
  2. jee pee Messages postés 31966 Date d'inscription   Statut Modérateur Dernière intervention   10 010
     

    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
  3. pcsystemd Messages postés 734 Statut Membre 23
     

    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
  4. pcsystemd Messages postés 734 Statut Membre 23
     

    Merci, c'est OK.


    0