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


  • ANNUAIRE
  • [EN] Lost-chall
    Site de challenge présenté sous la forme de différente saison. Pour passer une saison vous devez avoir accumulÃ...
    Challenges
    [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [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] Defcon
    Lancé en 1992 par Dark Tangent, DEFCON est la plus ancienne et la plus grande conférence underground de...
    Hacking
    [EN] osix
    Site de challenge qui utilise un système de level on chaque épreuve doit être réussie avant d'accédÃ...
    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 547 01-11-2012, 22h50
Dernier message: sakiir
  [Html/Javascript] Comment cachées les informations que contienne une variable ? WizOut 22 1,024 21-10-2012, 14h15
Dernier message: sakiir
  [Php] Comment transformer le BBCode en HTML CyberSee 0 186 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