Awk/shell insertion d'une donnée dans un file

Fermé
titexe Messages postés 55 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 16 août 2010 - 14 mai 2007 à 11:48
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 24 mai 2007 à 14:34
Bonjour,

Priére de m'aider sur cette tache,

je voudrais insérer un paramétre ($p16=entier ( des numéros ))dans un fichier , a la 1ere ligne le champ 14 , les champs sont séparé par des pipes.

ex:
p16=20070908_4343
cette valeur je veux l'inserer dans le champ 14 de la 1ere ligne de ce fichier:

@|08|GG|05|XX|200601101600|AAAA|0||OD|ACTES||||
B||
B||
D||

le résultat ca doit etre :

@|08|GG|05|XX|200601101600|AAAA|0||OD|ACTES|||20070908_4343|
B||
B||
D||

Merci d'avance , de m'aider a completer cette tache,

je remercie tous les modérateurs de Forum CCM , qui m'ont aidé pas mal de fois,

Cordialement,
A voir également:

6 réponses

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
14 mai 2007 à 11:55
Salut,

Si le champ 14 est toujours le dernier champ :
sed "1 s/|$/$p16|/"
;-))
0
titexe Messages postés 55 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 16 août 2010 1
14 mai 2007 à 12:02
re,

oui ce champ 14 est le dernier champ de la 1ére ligne,

cette commande insére directement dans le fichier originale?

Merci d'avance,
0
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 > titexe Messages postés 55 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 16 août 2010
14 mai 2007 à 12:12
cette commande insére directement dans le fichier originale?
Oui à condition de rajouter le switch "-i.bak" (.bak fait crée une sauvegarde du fichier original avec l'extension "bak")

S'applique uniquement au version de "sed" supérieure à 4.0.
Pour les versions antérieures utiliser un fichier temporaire.
0
titexe Messages postés 55 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 16 août 2010 1
22 mai 2007 à 15:33
Cette commande marche a merveille ds un environnement windows ;

Mais quand j'ai testé cette commande sed dans un environnement Unix ( AIX IBM ) ca n'as pas marché?

Veuillez m'aider a compléter cette tache,

Merci d'avance,

Cordialement
0
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
22 mai 2007 à 15:59
Ta version de "sed" ne doit pas implémenter ce "switch", il te faudra passer par un fichier temporaire :
sed 's/foo/bar/ < fichier.in > fichier.out
mv -f fichier.out fichier.in
;-))
0
titexe Messages postés 55 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 16 août 2010 1 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
22 mai 2007 à 16:03
la commande deviendra comme suit :

sed "1 s/|$/$p16|/" fichier.in > fichier.out
mv -f fichier.out fichier.in

Merci de me confirmer !!

Merci encore une fois
0
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
22 mai 2007 à 16:16
Oui ;-))
0
titexe Messages postés 55 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 16 août 2010 1
22 mai 2007 à 21:57
c'est OK , Merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
titexe Messages postés 55 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 16 août 2010 1
24 mai 2007 à 14:25
bonjour,

Comment je peux vérifier , est ce que le champs 14 est vide ou pas , avant que j'insére la valeur de P16 ?

car si je recois un fichier avec une valeur inscrite dans le champs 14 , je ne dois pas insérer une nouvelle valeur,

c'est ca ma contrainte,

Merci encore une fois !!!

Cordialement,
0
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
24 mai 2007 à 14:34
Re-
if [ "$(sed -n '1p' fichier | cut -d"|" -f 14)" == "" ];then echo "Vide";else echo "Pas vide"; fi
;-))
0