Format de fichier

fabien.joubert Messages postés 35 Statut Membre -  
fabien.joubert Messages postés 35 Statut Membre -
bonjour j'aimerais savoir comment on test le format de chaque ligne d'un fichier

dans des fichier je test le format de chaque ligne du premier champ

$list = array (
"arbre.txt",
"cond.txt",
"gestion.txt",
"planning.txt",
"profile.txt",
"res.txt",
"rules.txt",
"session.txt",
"task.txt",
"ug.txt",
"uprocs.txt",
"user.txt");
foreach ($list as $value)
{
exec("cat /exec/products/dollaru/$_POST[path]/files/$value | -f1 -d" "" | awk /^[0-9]*$/);
exec("[$?<>0] break");
}

qu'en pensez vous? merci d'avance
A voir également:

12 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Quel langage ?

Et c'est quoi ça au-dessus, ton code ou le fichier à tester ?
0
fabien.joubert Messages postés 35 Statut Membre 14
 
en fait le problème se trouve sur c 2 lignes... c'est du ksh. quelqu'un si connaît un peu? gracias

cat /exec/products/dollaru/$_POST[path]/files/$value | -f1 -d" "" | awk /^[0-9]*$/
[$?<>0] break
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Si tu nous disais plus clairement avec des exemples ce que tu veux faire, à quoi ressemble le 1er champ de chaque ligne de chaque fichier (afin qu'on vérifie l'exactitude de ta regex), et les tenants et aboutissants de ton script, parce que là vu comme ça c'est flou, enfin pour moi en tout cas ...

Merci.
0
fabien.joubert Messages postés 35 Statut Membre 14
 
en fait j'aimerais tester le premier champ de chaque ligne de mon fichier
j'aimerais tester leur format,
mais je ne sais pas comment m'y prendre...

j'aimerais tester si la première colonne du soit exclusivement du code numérique
0

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

Posez votre question
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Tu peux coller quelques lignes de ton fichier s'il te plaît.
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
En attendant regarde cette astuce dans la FAQ : shell tester une variable numerique
0
fabien.joubert Messages postés 35 Statut Membre 14
 
1182852803 4S+06NN 1er samedi sur 4 semaines (4w) (+6c) n (nnn,nnn,nnn,nnn,nnn,yyy,nnn)
1182852803 4S+07NN 1er dimanche sur 4 semaines (4w) (+7c) n (nnn,nnn,nnn,nnn,nnn,nnn,yyy)
1182852803 4S+13NN 2eme samedi sur 4 semaines (4w) (+13c) n (nnn,nnn,nnn,nnn,nnn,yyy,nnn)
1182852803 4S+14NN 2eme dimanche sur 4 semaines (4w) (+14c) n (nnn,nnn,nnn,nnn,nnn,nnn,yyy)
1182852803 4S+20NN 3eme samedi sur 4 semaines (4w) (+20c) n (nnn,nnn,nnn,nnn,nnn,yyy,nnn)
1182852803 4S+21NN 3eme dimanche sur 4 semaines (4w) (+21c) n (nnn,nnn,nnn,nnn,nnn,nnn,yyy)
1182852803 4S-01NN 4eme dimanche sur 4 semaines (4w) (-1c) n (nnn,nnn,nnn,nnn,nnn,nnn,yyy)
1182852803 4S-02NN 4eme samedi sur 4 semaines (4w) (-2c) n (nnn,nnn,nnn,nnn,nnn,yyy,nnn)
1182852803 A+01AA Le premier jour de l'annee (12m) (+1c) n (nny,nny,nny,nny,nny,nny,nny)
1182852803 A+01O+ le premier jour ouvre de l'annee (12m) (+1w) n (ynn,ynn,ynn,ynn,ynn,ynn,ynn)
1182852803 A+5NN le 5 janvier (12m) (+5c) n (yyy,yyy,yyy,yyy,yyy,yyy,yyy)
1182852803 A-01O- le dernier jour ouvre de l'annee (12m) (-1w) n (ynn,ynn,ynn,ynn,ynn,ynn,ynn)
1182852803 A-05_V le 2ieme vendredi ouvre de l'annee (12m) (+8c) n (nnn,nnn,nnn,nnn,yyy,nnn,nnn)
1182852803 A-08_V le 8ieme jour ouvre de l'annee (12m) (+8c) f (ynn,ynn,ynn,ynn,nnn,nnn,nnn)
1182852803 A-27N le 5 decembre (12m) (-27c) n (yyy,yyy,yyy,yyy,yyy,yyy,yyy)
1182852803 CAT le dernier jour ouvre sem entiere mois (2m) (+25c) n (yyy,yyy,yyy,yyy,yyy,yyy,yyy)
1182852803 CP vendredi ouvre derniere sem entiere mois (1m) (-3c) p (nnn,nnn,nnn,nnn,ynn,nnn,nnn)
1182852803 CPON (1m) (+4c) n (nny,nny,nny,nny,nny,nny,nny)
1182852803 H+01_N tous les lundis (1d) (+1c) n (yyy,nnn,nnn,nnn,nnn,nnn,nnn)
1182852803 H+01_S tous les 15 jours le lundi (2w) (+1c) n (yyy,nnn,nnn,nnn,nnn,nnn,nnn)
1182852803 H+02O+ tous les mardis si chome report+ (1w) (+2c) f (ynn,ynn,ynn,ynn,ynn,ynn,ynn)
1182852803 H+02_N tous les mardis (1d) (+1c) n (nnn,yyy,nnn,nnn,nnn,nnn,nnn)
1182852803 H+03_N tous les mercredis (1d) (+1c) n (nnn,nnn,yyy,nnn,nnn,nnn,nnn)
1182852803 H+04_N tous les jeudis (1d) (+1c) n (nnn,nnn,nnn,yyy,nnn,nnn,nnn)
1182852803 H+05_N tous les vendredis (1d) (+1c) n (nnn,nnn,nnn,nnn,yyy,nnn,nnn)
1182852803 H+06_N tous les samedis (1d) (+1c) n (nnn,nnn,nnn,nnn,nnn,yyy,nnn)
1182852803 H+07_N tous les dimanches (1d) (+1c) n (nnn,nnn,nnn,nnn,nnn,nnn,yyy)
1182852803 J+01LJ Du Lundi au Jeudi (1d) (+1c) n (yyy,yyy,yyy,yyy,nnn,nnn,nnn)
1182852803 J+01LS Du lundi au samedi (1d) (+1c) n (yyy,yyy,yyy,yyy,yyy,yyy,nnn)
1182852803 J+01LV Du Lundi au Vendredi N Du Lundi au Vendredi sauf jours feries (1d) (+1c) n (yyy,yy
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Bon voilà un exemple à adapter selon tes besoins :
$ cat -n plop

     1  1182852803 4S+06NN 1er samedi sur 4 semaines (4w) (+6c) n
     2  1182852803 4S+07NN 1er dimanche sur 4 semaines (4w) (+7c) n
     3  a1182852803 4S+13NN 2eme samedi sur 4 semaines (4w) (+13c) n
     4  -1182852803 4S+14NN 2eme dimanche sur 4 semaines (4w) (+14c) n
     5  118b28?52803 4S+20NN 3eme samedi sur 4 semaines (4w) (+20c) n
     6  1182852803 4S+21NN 3eme dimanche sur 4 semaines (4w) (+21c) n
     7  1182852803 4S-01NN 4eme dimanche sur 4 semaines (4w) (-1c) n

$ awk '$1 ~ /^:digit:*$/ {print "     "FNR"  " $0 }' plop

     1  1182852803 4S+06NN 1er samedi sur 4 semaines (4w) (+6c) n
     2  1182852803 4S+07NN 1er dimanche sur 4 semaines (4w) (+7c) n
     6  1182852803 4S+21NN 3eme dimanche sur 4 semaines (4w) (+21c) n
     7  1182852803 4S-01NN 4eme dimanche sur 4 semaines (4w) (-1c) n
$ 
;-))
0
fabien.joubert Messages postés 35 Statut Membre 14
 
merci jipicy mais qu'est ce qu'elle fait cette commande plop en fait?
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
"plop" c'est le nom du fichier dans lequel j'ai copié quelques lignes issues de ton "copier/coller" plus haut.

La ligne de commande c'est :
awk '$1 ~ /^:digit:*$/ {print "     "FNR"  " $0 }'
qui elle ne fait qu'afficher les lignes du fichier "plop" ne commençant exclusivement par un ou plusieurs caractères numériques dans le 1er champ.

;-))
0
fabien.joubert Messages postés 35 Statut Membre 14
 
je ne comprends pas ca ne marche pas... je suis embêté j'avoue
alors que je suis d'accord avec la commande awk que tu me propose...
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Affiche tes essais ici. Réduit ton fichier d'entrée à quelques lignes (dont certaines commençant par autre chose que des chiffres) et appliques la commande...
0
fabien.joubert Messages postés 35 Statut Membre 14
 
<?
#Application developpee par Philippe BEAUDEQUIN (philippe.beaudequin@gadz.org)
#Eleve ingenieur ENSAM
#Juin a Septembre 2005
#version 03

session_start();

$id=session_id();
if($_POST[path])
{
echo "<b><font size=2>Importation automatique des donnees extraites par le shell</font></b><font color=green size=2><br>";
echo "session = " . $id ;

$PATH1="/var/www/html/dollaru/import/$id";
$list = array (
"arbre.txt",
"cond.txt",
"gestion.txt",
"planning.txt",
"profile.txt",
"res.txt",
"rules.txt",
"session.txt",
"task.txt",
"ug.txt",
"uprocs.txt",
"user.txt");
echo "toto";
foreach ($list as $value)
{
echo $value;
exec ("verif.ksh");

echo "titi";
#exec("[$?<>0] break");
echo "tutu";
}
echo "toto";
exec("mkdir $PATH1");
exec("rm -f $PATH1/*.txt");
foreach ($list as $value)
{
# exec("cp $PATH1/$value /exec/products/dollaru/XB2/files/$value",$t);
#exec("wget -O $PATH1/$value ftp://$_POST[login]:$_POST[password]@$_POST[hostname]/$_POST[path]/files/$value",$t);
exec("cp /exec/products/dollaru/$_POST[path]/files/$value $PATH1/$value",$t);
echo "Fichier $value copie<br>";
}
echo "<b><bR><font size=2>Creation des table dans la base de donnees et enregistrement des donnees</font><br></b>";
include('create.php');

}

else include('form_import.php');
?>
0