• STATISTIQUES
  • Il y a eu un total de 0 membres et 28344 visiteurs sur le site dans les dernières 24h pour un total de 28 344 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [EN] Dare your mind
    JavaScript: 6, Crypto: 44, Stegano: 36, Logic: 13, Special: 27, Science: 11, Realistic: 7, Programming: 10, Crack It: 6,...
    Challenges
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [EN] Exploit-db
    Une base de données d'exploits triés par genre (GHDB, Remote, Local, Web, DOS, ShellCode) à ...
    Vulnérabilités
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges

  • 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
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 531 01-11-2012, 22h50
Dernier message: sakiir
  [Html/Javascript] Comment cachées les informations que contienne une variable ? WizOut 22 990 21-10-2012, 14h15
Dernier message: sakiir
  [Php] Comment transformer le BBCode en HTML CyberSee 0 183 17-06-2011, 04h23
Dernier message: CyberSee

Atteindre :


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