Executer une commande venant d'un fichier de données

Fermé
delfel Messages postés 4 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 24 octobre 2013 - 23 oct. 2013 à 16:44
 delfel - 25 oct. 2013 à 20:31
Bonjour,

je vous expose mon problème, déjà je suis débutante en shell

j'ai un fichier de données de plusieurs lignes, chaque lignes a elle même plusieurs données, dont une donnée date (variable), et pour éviter de devoir toucher a ce fichier j'ai inscrit les dates de cette façon exemple: date +%d/%m/%Y

mon shell récupère toutes les données mais lorsque je récupère mon champs date il me le laisse en forme du fichier de donnée,

je ne sais pas comment faire en sorte qui prenne un format JJ/MM/AAAA lors de la recirculation de l'information

si vous avez une piste qui pourrais m'aider

merci
A voir également:

7 réponses

dubcek Messages postés 18728 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 mai 2024 5 615
Modifié par dubcek le 24/10/2013 à 09:55
hello
$ awk 'BEGIN {OFS=FS=";"} {$3 | getline $3; print}' fichier
1 2 4 5 ;TRAITEMENT;241013;TRAITEMENT.our;TRAITEMENT.err;
1 3 4 5 ;TRAITEMENT2;2013;TRAITEMENT2.out;TRAITEMENT2.err;
$
$ awk 'BEGIN {OFS=FS=";"} {$3 | getline $3; printf "NOM: %s\nPARA: %s\nSORTIE: %s\nERREUR: %s\n",$2, $3, $4, $5}' fichier
NOM: TRAITEMENT
PARA: 241013
SORTIE: TRAITEMENT.our
ERREUR: TRAITEMENT.err
NOM: TRAITEMENT2
PARA: 2013
SORTIE: TRAITEMENT2.out
ERREUR: TRAITEMENT2.err
$
1
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
23 oct. 2013 à 19:10
Salut,
c'est quelque chose comme ça que tu veux faire ?
#!/bin/bash

datas=("5 janvier 2014" "date +%d/%m/%Y" "03/11/2013")

for current in "${datas[@]}"
do
if $(echo $current | grep %)
then
datas[$n]=$($current)
fi
n=$[$n+1]
done

echo "${datas[@]}"

0
delfel Messages postés 4 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 24 octobre 2013
24 oct. 2013 à 08:23
Bonjour Flachy Joe

en faite mon fichier de données ressemble a ça (sachant que dans l'avenir on ne devra rien toucher de ce fichier)

1 2 4 5 ;TRAITEMENT;date +%d%m%y;TRAITEMENT.our;TRAITEMENT.err;
1 3 4 5 ;TRAITEMENT2;date +%Y;TRAITEMENT2.out;TRAITEMENT2.err;
........

il fera environ 25 lignes avec 10 arguments chacune

j'ai mon Shell qui me permet la récupération et la découpe des données pour faire un nouveau fichier de données qui lui ressemble a ça

NOM : TRAITEMENT
PARA : 24/10/2013
SORTIE : TRAITEMENT.out
ERREUR : TRAITEMENT.err

actuellement je récupère le champs tel qu'il est dans mon fichier de donnée 1er, je sais pas comment je pourrais le convertir en date ou année

chaque ligne peu avoir 1 paramètre ou plusieurs paramètre et pas forcement des dates


merci
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 412
24 oct. 2013 à 09:48
Salut,

$ cat plop
1 2 4 5 ;TRAITEMENT;date +%d/%m/%y;TRAITEMENT.our;TRAITEMENT.err;
1 3 4 5 ;TRAITEMENT2;date +%Y;TRAITEMENT2.out;TRAITEMENT2.err;
1 4 4 5 ;TRAITEMENT2;;TRAITEMENT2.out;TRAITEMENT2.err;

$ cat foo.sh
#! /bin/bash

while read line
do
var=$(grep -o 'date[^;]*' <<<${line})
sed 's#date[^;]*#'"$(${var})"'#' <<<"${line}"
done < plop

$ ./foo.sh
1 2 4 5 ;TRAITEMENT;24/10/13;TRAITEMENT.our;TRAITEMENT.err;
1 3 4 5 ;TRAITEMENT2;2013;TRAITEMENT2.out;TRAITEMENT2.err;
1 4 4 5 ;TRAITEMENT2;;TRAITEMENT2.out;TRAITEMENT2.err;

$

0

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

Posez votre question
delfel Messages postés 4 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 24 octobre 2013
24 oct. 2013 à 09:58
merci beaucoup
je vais tester dans la journée
mais encore merci
0
delfel Messages postés 4 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 24 octobre 2013
24 oct. 2013 à 12:13
ça fonctionne super bien quant j'ai qu'un date par ligne mais pas quant j'en ai 2
0
dubcek Messages postés 18728 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 mai 2024 5 615
24 oct. 2013 à 14:31
montre un exemple de donnée avec 2 date
0
c'est ok
j'ai trouver un palliatif ^^

je nome mon second date en jour, je le modifie après le premier passage de la commande que ma transmit ziper 31 et la relance une seconde fois

je sais c'est pas très propre mais ça fonctionne

merci de votre aide
0