• STATISTIQUES
  • Il y a eu un total de 1 membres et 6402 visiteurs sur le site dans les dernières 24h pour un total de 6 403 personnes!


    1 membre s'est inscrit dans les dernières 24h!


    Membres: 2 606
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] Lost-chall
    Site de challenge présenté sous la forme de différente saison. Pour passer une saison vous devez avoir accumulÃ...
    Challenges
    [FR] Root-Me
    Notre équipe se base sur un constat : à l'heure actuelle ou l'information tend à devenir...
    Hacking
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités
    [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!

    €



Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
comment afficher une portion de fichier
09-05-2014, 14h34
Message : #1
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
comment afficher une portion de fichier
je sais pas vous, mais moi j'ai l'habitude de commenter assez généreusement les bouts de code que j'écris, particulièrement quand il s'agit d'une fonction ou d'un programme qui peut prendre plusieurs paramètres, à tel point qu'avec un paramètre --help je pourrais presque me permettre d'afficher purement et simplement le commentaire :

Code BASH :
# commentaire n°1, osef
# blabla
function n1() {
    blaaaa
}

# toto : fonction qui fait pleins de trucs
#    --riri     permet d'invoquer riri
#    --fifi     faire une partie de belotte
#    --loulou   mettre oncle donald a la flotte
function toto() {
    blablabla
         bla.
}

# commentaire n°3, osef aussi
# blablabla
# prout
function n3() {
    blablacoinbla
    gruikcoinblabla
}


alors voila, le but est d'afficher uniquement le 2e commentaire, comment je pourrais faire ?
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (1) Répondre
09-05-2014, 14h43 (Modification du message : 09-05-2014, 14h56 par fr0g.)
Message : #2
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: comment afficher une portion de fichier
Bash :

Code BASH :

#test
#test 2
sed -n 2p $0
 


Code :
██ [ ~ ] [ 14:43:35 ]
██ sh test.sh
#test 2

python:
Code PYTHON :

#test
#test 2
import sys
print open(sys.argv[0], "r").read().split("\n")[1]
#welcome in crappy land
 


Code :
██ [ ~ ] [ 14:42:55 ]
██ python test.py
#test 2
+1 (0) -1 (0) Répondre
09-05-2014, 15h11
Message : #3
balis Hors ligne
Hack Compagnie by Eballys
*



Messages : 156
Sujets : 3
Points: 16
Inscription : Dec 2012
RE: comment afficher une portion de fichier
Paramètre un fichier en bash avec les commentaires dedans , genre $1 pour le commentaire n 1 etc ?
Sur le net , les poules ont des dents. Bali .
Soit original soit celui qui sort de l'ordinaire soit toi . Bali .
C: ok bash : ok asm : en cours.
HTML/CSS : ok , PHP/MySQL : en cours.
+1 (0) -1 (0) Répondre
09-05-2014, 15h22 (Modification du message : 09-05-2014, 15h23 par gruik.)
Message : #4
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: comment afficher une portion de fichier
(09-05-2014, 15h11)balis a écrit : Paramètre un fichier en bash avec les commentaires dedans , genre $1 pour le commentaire n 1 etc ?

pas exactement, basiquement ici on va dire quand j'appelle ./programme --help il m'affiche simplement le bloc de code juste au dessus de la fonction toto(), où qu'elle se trouve, peu importe le nombre d'autres blocs de commentaires ou d'autres fonctions avant/après

en pratique si j'ai plusieurs fonctions je peux envisager un mécanisme du genre :

Code BASH :
ln -s mon_programme fonction_toto
ln -s mon_programme fonction_coincoin
(...)

if [ "$(basename $0)" == "fonction_toto" ] && [ "$1" == "--help" ]; then
   # affiche l'aide de la fonction toto, donc le bloc de commentaires juste au dessus de sa déclaration
fi
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (1) Répondre
09-05-2014, 15h51 (Modification du message : 09-05-2014, 15h54 par fr0g.)
Message : #5
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: comment afficher une portion de fichier
Après discussion sur irc j'ai mieux compris le truc recherché Smile

Un peu long ma version en Py, je pense qu'il y a largement moyen de faire plus court
Code PYTHON :

import sys

# toto : fonction qui fait pleins de trucs
#    --riri     permet d'invoquer riri
#    --fifi     faire une partie de belotte
#    --loulou   mettre oncle donald a la flotte
def toto():
    print 1337

# get_comment:
# fonction qui recupere les commentaires
def get_comment(f):
    r = []
    c = open(sys.argv[0], "r").read().split("\n")
    i = 0
    j = 0
    while (i < len( c )):
        if (c[i].replace(" ", "").replace("\t", ""))[:+(3 + len(f))] == "def"+f:            
            j =  i - 1
            while (j > 0):
                if (len(c[j]) == 0 or (c[j].replace(" ","").replace("\t", ""))[0] != "#"): break
                j -= 1
            break
        i += 1
    for x in range(j, i):
        print c[x]

#exemple :
get_comment("get_comment")
get_comment("toto")

 


Execution :
Code :
██ [ ~ ] [ 15:42:02 ]
██ python test.py

# get_comment:
# fonction qui recupere les commentaires

# toto : fonction qui fait pleins de trucs
#    --riri     permet d'invoquer riri
#    --fifi     faire une partie de belotte
#    --loulou   mettre oncle donald a la flotte
+1 (2) -1 (0) Répondre
09-05-2014, 16h00
Message : #6
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: comment afficher une portion de fichier
yep sur le principe c'est valide, y'a moyen de faire plus court néanmoins Wink
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (1) Répondre
09-05-2014, 16h18 (Modification du message : 09-05-2014, 16h18 par Booster2ooo.)
Message : #7
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: comment afficher une portion de fichier
En pseudo code vite fais pcq j'suis overbooké
Code :
function getComment(fName) {
    var me = file_open(process.arg[0], r).readToEnd();
    var regEx = new RegEx("# "+fName+"\s?:(.*)function "+fName+"\(\)\s?{");
    var match = regEx.matches(me);
    var help = "# "+fName+" :" + match + "function "+ fName +"() {";
    return help;
}
+1 (1) -1 (0) Répondre
09-05-2014, 16h23
Message : #8
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: comment afficher une portion de fichier
en fait tu match sur le fait qu'on a :
Code :
# fName :
(...)
function fName() {
le format de la premiere ligne du bloc de commentaire n'est pas garanti, mais pourquoi pas Smile ça marche aussi.
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (1) Répondre
09-05-2014, 16h26 (Modification du message : 09-05-2014, 16h27 par Junky.)
Message : #9
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
RE: comment afficher une portion de fichier
Pris dans ma réserve de commandes:

Code BASH :


sed -e '/./{H;$!d;}' -e 'x;/toto/!d;' pouet.py | grep "#"

 


Sortie:
Code BASH :

(509) silentd@G3nt00:~$ sed -e '/./{H;$!d;}' -e 'x;/toto/!d;' pouet.py | grep "#"
# toto : fonction qui fait pleins de trucs
#    --riri     permet d'invoquer riri
#    --fifi     faire une partie de belotte
#    --loulou   mettre oncle donald a la flotte
(510) silentd@G3nt00:~$
 


Seul "inconvéniant" il faut que le bloque de commentaire soit déparé par des espaces
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (1) -1 (0) Répondre
09-05-2014, 16h53
Message : #10
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: comment afficher une portion de fichier
(09-05-2014, 16h23)gruik a écrit : en fait tu match sur le fait qu'on a :
Code :
# fName :
(...)
function fName() {
le format de la premiere ligne du bloc de commentaire n'est pas garanti, mais pourquoi pas Smile ça marche aussi.

"}\s*#(.*)function "+fName+"\(\)\s?("
Ca devrait le faire aussi non?

Apres, je ne vois plus d'autre solution que de lire le fichier, le splitter en une liste de lignes et la lire à l'envers, dès qu'on tombe sur function toto() {, on output les lignes qui commencent par #, et quand il y en a plus, on exit?
+1 (0) -1 (0) Répondre
09-05-2014, 17h00
Message : #11
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: comment afficher une portion de fichier
(09-05-2014, 16h53)Booster2ooo a écrit : "}\s*#(.*)function "+fName+"\(\)\s?("
Ca devrait le faire aussi non?
humm... l'accolade fermante } en début je suis pas certain de voir où ça mène en fait...

Citation :Apres, je ne vois plus d'autre solution que de lire le fichier, le splitter en une liste de lignes et la lire à l'envers, dès qu'on tombe sur function toto() {, on output les lignes qui commencent par #, et quand il y en a plus, on exit?

ce dont on est sûr c'est qu'il y a une ligne vide (\n\n) juste avant le bloc de commentaire (c'est plus lisible quoi), que chaque ligne du bloc de commentaires commence par '#' et que l'on doit s'arreter à la ligne (unique) qui commence par "function toto"

une methode consiste à dire :
- si la ligne commence par "function toto" on affiche le tableau t
- si la ligne commence par '#' on la rajoute au tableau t
- sinon on met le tableau t à zéro

en perl :
Code PERL :
perl -ne 'print @t if/^function toto/;(/^#/)?push @t,$_:{@t=()}' programme.sh

note que la 2e partie est un opérateur ternaire

ça marche aussi avec du awk, c'est juste un chouillat plus long
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (1) Répondre
09-05-2014, 17h39
Message : #12
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: comment afficher une portion de fichier
et la version à base de regex, en une ligne de python (cc fr0g ;p) :
Code PYTHON :
python -c 'import re; print re.findall("\n\n(#(?:.(?!\n{2}))+)function toto", open("script.sh").read(), re.MULTILINE | re.DOTALL)[0]'
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (1) Répondre
09-05-2014, 22h44
Message : #13
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: comment afficher une portion de fichier
(09-05-2014, 17h39)gruik a écrit : et la version à base de regex, en une ligne de python (cc fr0g ;p) :
Code PYTHON :
python -c 'import re; print re.findall("\n\n(#(?:.(?!\n{2}))+)function toto", open("script.sh").read(), re.MULTILINE | re.DOTALL)[0]'

Yep, en regex c'est tout de suite plus court ^^
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Python] Sauvegarde de fichier Dr.Jekyll 10 473 01-11-2012, 22h50
Dernier message: sakiir
  [Html/Javascript] Comment cachées les informations que contienne une variable ? WizOut 22 730 21-10-2012, 14h15
Dernier message: sakiir
  [Php] Comment transformer le BBCode en HTML CyberSee 0 170 17-06-2011, 04h23
Dernier message: CyberSee

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut