Utilisation d'une variable
Fermé
lucygr
Messages postés
31
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
26 avril 2012
-
3 oct. 2003 à 01:20
lucygr Messages postés 31 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 26 avril 2012 - 11 oct. 2003 à 17:33
lucygr Messages postés 31 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 26 avril 2012 - 11 oct. 2003 à 17:33
A voir également:
- Utilisation d'une variable
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- La ressource demandée est en cours d'utilisation - Forum Téléphones & tablettes Android
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
10 réponses
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
3 oct. 2003 à 01:43
3 oct. 2003 à 01:43
Salut Lucy,
Je ne suis pas sûre d'avoir bien compris la question, mais je vais essayer de te répondre quand même :o)
$1, $2 represente les arguments 1 et 2 passsés à la fonction.
Voili voilou, ca marche bien Mais je ne sais pas si c'est ce que tu attendais :-)
@++
Je ne suis pas sûre d'avoir bien compris la question, mais je vais essayer de te répondre quand même :o)
[shell]# function tri () >{ > sort -t: -nk$1 $2; >} [shell]# tri <le n° du champ sur le quel trier> <fichier à trier>
$1, $2 represente les arguments 1 et 2 passsés à la fonction.
Voili voilou, ca marche bien Mais je ne sais pas si c'est ce que tu attendais :-)
@++
"Si c'est stupide et que ça marche, alors ce n'est pas stupide"
lucygr
Messages postés
31
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
26 avril 2012
3 oct. 2003 à 02:27
3 oct. 2003 à 02:27
Merci !!!! :o)) oui c'etais exactement ca ma question et ca marche comme ca....
Mais je crois que j'ai pas su poser la question :o( pardon...
Je dois afficher les champs nom du fichier, taille, js.modification et js.acces d'un repertoire (celui-ci je vais le passer comme parametre).
Je dois passer comme parametre de la fonction aussi le champ a trier.
Ca c'est la commande que j'ai fait, mais comment eviter de confondre les parametres de la fonction avec les autres parametres. Je voudrias a la fin ecrire sort -nkvariable, si je ecris sort -nk$3 ca marche pas.:
find /root -printf "%p:%s:%T@:%A@\n" | awk -F ":" -v dj=$(date "+%s") '{print $1":"$2":" int((dj-$3)/(3600*24))":" int((dj-$4)/(3600*24) )}' | sort -nk3 -t:
Lucy
Mais je crois que j'ai pas su poser la question :o( pardon...
Je dois afficher les champs nom du fichier, taille, js.modification et js.acces d'un repertoire (celui-ci je vais le passer comme parametre).
Je dois passer comme parametre de la fonction aussi le champ a trier.
Ca c'est la commande que j'ai fait, mais comment eviter de confondre les parametres de la fonction avec les autres parametres. Je voudrias a la fin ecrire sort -nkvariable, si je ecris sort -nk$3 ca marche pas.:
find /root -printf "%p:%s:%T@:%A@\n" | awk -F ":" -v dj=$(date "+%s") '{print $1":"$2":" int((dj-$3)/(3600*24))":" int((dj-$4)/(3600*24) )}' | sort -nk3 -t:
Lucy
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
3 oct. 2003 à 03:12
3 oct. 2003 à 03:12
Re-Salut,
Si tu n'as que deux parametres à rentrer (le dossier et le champ pour le tri, tu utilises $1 et $2)
Les $1 et $2 en gras, sont les deux variables passées à ta fonction les autres sont celles de awk, mais étant donné que toutes ces variables n'ont qu'une portée locale, ca ne gène en rien le fonctionnement...
Dis moi si ca marche, chez moi à ca l'air de fonctionner correctement ;-)
@++
Si tu n'as que deux parametres à rentrer (le dossier et le champ pour le tri, tu utilises $1 et $2)
[shell]# tri () { find $1 -printf "%p:%s:%T@:%A@\n" | awk -F ":" -v dj=$(date "+%s") '{print $1":"$2":" int((dj-$3)/(3600*24))":" int((dj-$4)/(3600*24) )}'| sort -t: -nk$2; } [shell]# tri nom_dossier num_champ
Les $1 et $2 en gras, sont les deux variables passées à ta fonction les autres sont celles de awk, mais étant donné que toutes ces variables n'ont qu'une portée locale, ca ne gène en rien le fonctionnement...
Dis moi si ca marche, chez moi à ca l'air de fonctionner correctement ;-)
@++
"Si c'est stupide et que ça marche, alors ce n'est pas stupide"
lucygr
Messages postés
31
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
26 avril 2012
3 oct. 2003 à 03:40
3 oct. 2003 à 03:40
Ouiiiiii !!!! ca marche !!!! :o))
et moi, j'ai cherche la reponse pendant toute la soir :o)... j'etais confuse
Je te remercie... c'est mon TP que je suis en train d'avancer et je dois remettre ce lundi.
Merci encore ! :o)
Lucila
et moi, j'ai cherche la reponse pendant toute la soir :o)... j'etais confuse
Je te remercie... c'est mon TP que je suis en train d'avancer et je dois remettre ce lundi.
Merci encore ! :o)
Lucila
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
3 oct. 2003 à 03:41
3 oct. 2003 à 03:41
De rien :o)
@++
@++
"Si c'est stupide et que ça marche, alors ce n'est pas stupide"
lucygr
Messages postés
31
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
26 avril 2012
3 oct. 2003 à 04:20
3 oct. 2003 à 04:20
Lucila
lucygr
Messages postés
31
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
26 avril 2012
3 oct. 2003 à 04:25
3 oct. 2003 à 04:25
Ma fonction est maintenant :
tri(){ find $1 -printf "%p:%s:%T@:%A@\n" | awk -F ":" -v dj=$(date "+%s") '{print $1":"$2":" int((dj-$3)/(3600*24))":" int((dj-$4)/(3600*24) )}' | sort -nk$2 -t: | awk -F: '{printf ("|%-50s|%8s|%8s|%8s|\n",$1,$2,$3,$4)}';}
Parfois, les nom des fichiers sont de longueur plus grande que 50. Il y a un facon pour afficher le champ "nom" (le premier) en plusieurs lignes dans ces cas? C'est pour ameliorer la presentation...
Merci,
Lucy
tri(){ find $1 -printf "%p:%s:%T@:%A@\n" | awk -F ":" -v dj=$(date "+%s") '{print $1":"$2":" int((dj-$3)/(3600*24))":" int((dj-$4)/(3600*24) )}' | sort -nk$2 -t: | awk -F: '{printf ("|%-50s|%8s|%8s|%8s|\n",$1,$2,$3,$4)}';}
Parfois, les nom des fichiers sont de longueur plus grande que 50. Il y a un facon pour afficher le champ "nom" (le premier) en plusieurs lignes dans ces cas? C'est pour ameliorer la presentation...
Merci,
Lucy
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
4 oct. 2003 à 00:01
4 oct. 2003 à 00:01
Bonsoir,
Bon j'ai trouvé un truc qui pourrait t'interesser, la commande showtable.
Mais il Faut l'installée si elle n'est pas presente, c'est le package:
perl-Data-ShowTable-3.3-7mdk
ensuite tu n'a plus qu'à remplacé ton dernier appel à awk:
awk -F: '{printf "|%-50s|%8s|%8s|%8s|\n",$1,$2,$3,$4)}')
par
showtable -d: -ti=titre1,titre2,titre3,titre4 -w=80
Tu auras un tableau sur 80 colones en largeur avec en plus les titres pour chaque champs!
(titre1 à 4 que tu peux biensur changer à souhait :o))
("man showtable" et "man Data::ShowTable" pour plus d'infos)
Par contre tu ne peux pas rediriger la sortie vers un fichier :-(
Il doit y avoir d'autre possibilitées, mais beaucoup plus complexes a mettre en oeuvre
Bon j'ai trouvé un truc qui pourrait t'interesser, la commande showtable.
Mais il Faut l'installée si elle n'est pas presente, c'est le package:
perl-Data-ShowTable-3.3-7mdk
ensuite tu n'a plus qu'à remplacé ton dernier appel à awk:
awk -F: '{printf "|%-50s|%8s|%8s|%8s|\n",$1,$2,$3,$4)}')
par
showtable -d: -ti=titre1,titre2,titre3,titre4 -w=80
Tu auras un tableau sur 80 colones en largeur avec en plus les titres pour chaque champs!
(titre1 à 4 que tu peux biensur changer à souhait :o))
("man showtable" et "man Data::ShowTable" pour plus d'infos)
Par contre tu ne peux pas rediriger la sortie vers un fichier :-(
Il doit y avoir d'autre possibilitées, mais beaucoup plus complexes a mettre en oeuvre
"Si c'est stupide et que ça marche, alors ce n'est pas stupide"
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
4 oct. 2003 à 00:03
4 oct. 2003 à 00:03
voilà la suite...
voili, voilou!
Bon Week End
@+
tri() { find $1 -printf "%p:%s:%T@:%A@\n" | awk -F ":" -v dj=$(date "+%s") '{print $1":"$2":" int((dj-$3)/(3600*24))":" int((dj-$4)/(3600*24) )}' | sort -nk$2 -t:| showtable -d: -ti=titre1,titre2,titre3,titre4 -w=80 ; }
voili, voilou!
Bon Week End
@+
"Si c'est stupide et que ça marche, alors ce n'est pas stupide"
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
4 oct. 2003 à 02:08
4 oct. 2003 à 02:08
Re,
En fait, il suffisait de bidouiler un peut ton dernierappel à awk.
Bon c'est sans doute pas du tout optimisé, mais ca marche:
@+
En fait, il suffisait de bidouiler un peut ton dernierappel à awk.
Bon c'est sans doute pas du tout optimisé, mais ca marche:
awk -F: ' BEGIN { b=" " }; BEGIN{ print "+--------------------------------------------------+--------+--------+--------+" }; { i=0 }; { str=$1 }; { while ( length(str)>50 ) { sc=substr(str,1,50); i+=51; str=substr($1,i,length($1)); printf ("|%-50s|%8s|%8s|%8s|\n",sc,b,b,b) } }; { printf ("|%-50s|%8s|%8s|%8s|\n",str,$2,$3,$4) }; END { print "+--------------------------------------------------+--------+--------+--------+" }'
@+
"Si c'est stupide et que ça marche, alors ce n'est pas stupide"
lucygr
Messages postés
31
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
26 avril 2012
4 oct. 2003 à 19:27
4 oct. 2003 à 19:27
Merci beacoup,
je viens de lire ta reponse... hier j'ai verifie et j'en avait pas aucune....
Je vais verifier si j'ai le packetage est installe sur mon ordi... je crois que la 2e facon ca va marcher... sinon, je te raconterai apres... :o)
Lucy
je viens de lire ta reponse... hier j'ai verifie et j'en avait pas aucune....
Je vais verifier si j'ai le packetage est installe sur mon ordi... je crois que la 2e facon ca va marcher... sinon, je te raconterai apres... :o)
Lucy
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
5 oct. 2003 à 02:00
5 oct. 2003 à 02:00
Oki :)
@++
@++
"Si c'est stupide et que ça marche, alors ce n'est pas stupide"
lucygr
Messages postés
31
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
26 avril 2012
11 oct. 2003 à 17:33
11 oct. 2003 à 17:33
Ma fonction a resulte comme ca, je la laisse pour si ca peut interesser a qqn.
Ca donne la liste de fichiers du repertoire qu'on a passe comme parametre, si il n'y a aucun argument, il donnde le repertoire de root.
liste_fichiers(){ case $# in 1) x1=$1;x2=2;;2) x1=$1;x2=$2;;0) x1=$(pwd);x2=2;;-ge3) x1=$(pwd);x2=2;;esac; ligne="--------------------------------------------------------------------------------";echo " Liste des fichiers";echo $ligne;echo "|Nom |Taille O.|Modif.js|Acces js|";echo $ligne; find $x1 -printf "%p:%s:%T@:%A@\n" | awk -F":" -v dj=$(date "+%s") '{print $1":"$2":"int((dj-$3)/(3600*24))":"int((dj-$4)/(3600*24))}'| sort -t: -nk$x2 > fichier ; awk -F":" '{while (length($1)>50) {printf("|%-50s|%9s|%8s|%8s|\n",substr($1,1,50)," "," "," "); $1=substr($1,51)} printf("|%-50s|%9s|%8s|%8s|\n",$1,$2,$3,$4)}' < fichier;echo $ligne;echo "Recapitulatif";echo "Nombre de Fichiers = " $(wc -l fichier); echo "Espace Globale = " $(du -s -b < fichier)"Octets " $(du -s -k < fichier)"K.octets " $(du -s -h < fichier)"Octets";}
Merci beaucoup pour l'aide.
A bientot,
Lucila
Ca donne la liste de fichiers du repertoire qu'on a passe comme parametre, si il n'y a aucun argument, il donnde le repertoire de root.
liste_fichiers(){ case $# in 1) x1=$1;x2=2;;2) x1=$1;x2=$2;;0) x1=$(pwd);x2=2;;-ge3) x1=$(pwd);x2=2;;esac; ligne="--------------------------------------------------------------------------------";echo " Liste des fichiers";echo $ligne;echo "|Nom |Taille O.|Modif.js|Acces js|";echo $ligne; find $x1 -printf "%p:%s:%T@:%A@\n" | awk -F":" -v dj=$(date "+%s") '{print $1":"$2":"int((dj-$3)/(3600*24))":"int((dj-$4)/(3600*24))}'| sort -t: -nk$x2 > fichier ; awk -F":" '{while (length($1)>50) {printf("|%-50s|%9s|%8s|%8s|\n",substr($1,1,50)," "," "," "); $1=substr($1,51)} printf("|%-50s|%9s|%8s|%8s|\n",$1,$2,$3,$4)}' < fichier;echo $ligne;echo "Recapitulatif";echo "Nombre de Fichiers = " $(wc -l fichier); echo "Espace Globale = " $(du -s -b < fichier)"Octets " $(du -s -k < fichier)"K.octets " $(du -s -h < fichier)"Octets";}
Merci beaucoup pour l'aide.
A bientot,
Lucila