Dupliquer et modifier une ligne

Résolu
rooty Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
rooty Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,

j'aimerais dupliquer une ligne et modifier la première ligne. J'ai un fichier d'entrée contenant une ligne et il me faudrait dupliquer cette ligne et la modifier dans un fichier de sortie comme l'exemple ci-dessous.

Si quelqu'un peut m'aider....

Merci d'avance

fichier d'entrée :
VERTOGAR;n;*;*;PARAMCFT:part=ORGA

fichier de sortie :
VERTOGAR;n;ORGA;*;PARAMCFT:part=$ORGA => ligne dupliquée et modifiée
VERTOGAR;n;*;*;PARAMCFT:part=ORGA => ligne à dupliquer

4 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    avec awk
    $ awk 'BEGIN {FS=OFS=";"} NR==1 {x=$0; split($NF, a, "[:=]"); $3=a[3]; sub("=", "=$"); print $0 RS x} NR!=1' fichier
    VERTOGAR;n;ORGA;*;PARAMCFT:part=$ORGA
    VERTOGAR;n;*;*;PARAMCFT:part=ORGA
    2
    1. rooty Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
       
      Super merci beaucoup
      0
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Un truc comme ça :

    $ cat plop 
    VERTOGAR;n;*;*;PARAMCFT:part=ORGA
    blabla
    blibli
    blublu

    $ sed '1{h;s/\(.*n;\)[^;]*\(.*=\)\(.*\)/\1\3\2$\3/;G}' plop
    VERTOGAR;n;ORGA;*;PARAMCFT:part=$ORGA
    VERTOGAR;n;*;*;PARAMCFT:part=ORGA
    blabla
    blibli
    blublu

    0
    1. rooty
       
      merci pour la réponse mais cela ne fonctionne pas

      #sed '1{h;s/\(.*n;\)[^;]*\(.*=\)\(.*\)/\1\3\2$\3/;G}' plop
      sed : 0602-404 Analyse syntaxique de la fonction 1{h;s/\(.*n;\)[^;]*\(.*=\)\(.*\)/\1\3\2$\3/;G} impossible.
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Sur quel système es-tu ? Quelle version de sed ?
      0
  3. rooty Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    je suis sur AIX... par contre je ne connais pas la version utilisé
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Sans garantie...

      Mets les instructions sed dans un fichier :
      $ cat script.sed 
      1 {
      h
      s/\(.*n;\)[^;]*\(.*=\)\(.*\)/\1\3\2$\3/
      G
      }

      Et appelle-le comme suit :
      $ sed -f script.sed plop 
      VERTOGAR;n;ORGA;*;PARAMCFT:part=$ORGA
      VERTOGAR;n;*;*;PARAMCFT:part=ORGA
      blabla
      blibli
      blublu
      0
  4. rooty Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    ba tjs pareil....

    #sed -f script.sed plop
    sed : 0602-404 Analyse syntaxique de la fonction h impossible.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      C'est bizarre, d'après la page de man AIX, il n'y a rien dans la syntaxe qui puisse générer cette erreur ;-\

      Désolé, je ne sais quoi te dire de plus ;-(
      0