Dupliquer et modifier une ligne

Résolu/Fermé
rooty Messages postés 4 Date d'inscription lundi 10 mars 2014 Statut Membre Dernière intervention 11 mars 2014 - Modifié par rooty le 10/03/2014 à 17:55
rooty Messages postés 4 Date d'inscription lundi 10 mars 2014 Statut Membre Dernière intervention 11 mars 2014 - 11 mars 2014 à 09:51
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
A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 11/03/2014 à 08:27
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
rooty Messages postés 4 Date d'inscription lundi 10 mars 2014 Statut Membre Dernière intervention 11 mars 2014
11 mars 2014 à 09:51
Super merci beaucoup
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
10 mars 2014 à 18:03
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
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
10 mars 2014 à 18:30
Sur quel système es-tu ? Quelle version de sed ?
0
rooty Messages postés 4 Date d'inscription lundi 10 mars 2014 Statut Membre Dernière intervention 11 mars 2014
10 mars 2014 à 18:41
je suis sur AIX... par contre je ne connais pas la version utilisé
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
10 mars 2014 à 18:44
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
rooty Messages postés 4 Date d'inscription lundi 10 mars 2014 Statut Membre Dernière intervention 11 mars 2014
10 mars 2014 à 18:49
ba tjs pareil....

#sed -f script.sed plop
sed : 0602-404 Analyse syntaxique de la fonction h impossible.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
10 mars 2014 à 19:24
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