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


  • ANNUAIRE
  • [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] CS Tutoring Center
    Site de challenge spécialisé dans les challenges de programmation C++ et java cependant, d'autres langages pe...
    Challenges
    [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [FR] Comment ca marche
     Gratuit et accessible à tous, ce site de communauté permet de se dépanner, se faire aider ...
    Webmaster

  • 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
sed golf
03-06-2016, 17h40
Message : #1
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
sed golf
Bonjour à tous,

Pour essayer de réanimer un peu le forum (qui se meurt légèrement ces temps-ci, hélas), je propose un petit jeu: le but est d'utiliser la commande UNIX "sed" pour passer d'une entrée donnée à une sortie donnée.

Je me lance donc, et le but sera de passer de l'entrée:

Code :
; ces lignes sont à supprimer
; blblblblbl
; the game

toto
titi
tutu

lolilol
the game

à

Code :
+toto
titi
tutu

+lolilol
the game
.

A vos claviers Big Grin
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (3) -1 (0) Répondre
03-06-2016, 18h50 (Modification du message : 03-06-2016, 18h51 par ark.)
Message : #2
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: sed golf
Well, here is my solution:

[spoiler]
Code BASH :

$> cat input.txt
; ces lignes sont à supprimer
; blblblblbl
; the game

toto
titi
tutu

lolilol
the game
$>  sed  '{/^;.*/d;/^$/{n;s/^\(.*\)$/+\1/}}' input.txt

+toto
titi
tutu

+lolilol
the game
 

[/spoiler]

Merci pour ce jeu :p
+1 (1) -1 (0) Répondre
03-06-2016, 18h58 (Modification du message : 04-06-2016, 08h15 par Atlas.)
Message : #3
Atlas Hors ligne
Membre actif
*



Messages : 69
Sujets : 7
Points: 3
Inscription : Aug 2012
RE: sed golf
Voici ma solution bien que pas terrible :
[spoiler]
Code :
sed -e '/^;/d' -e  's/toto/+toto/' -e '1,1d' -e 's/lolilol/+lolilol/' file
[/spoiler]

merci pour l'exercice Smile

Edit : d'accord je vais chercher une autre solution alors !

Edit : Voilà ma solution finale : [spoiler]
Code :
sed  '/^;/d;/^$/{N;s/\n/\n+/}' file
[/spoiler]
+1 (1) -1 (0) Répondre
03-06-2016, 19h01
Message : #4
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: sed golf
@Atlas: le principe est de coller un "+" devant la première ligne suivant une ligne vide (la solution fonctionne sur l'exemple donné, mais n'est absolument pas générique :])

Pour situer le contexte, je voulais éviter de me faire ch*er à gérer à la main les fichiers de collisions IDA lors de la création de signature, du coup j'ai dû bricoler un script sed, et l'idée m'est venue de faire un petit golf à partir de ça :þ
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (1) -1 (0) Répondre
03-06-2016, 19h28 (Modification du message : 03-06-2016, 19h30 par notfound.)
Message : #5
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: sed golf
Bon, il me manque un \n ... Je poste et j'update quand j'ai trouvé !

[spoiler]
Code :
>>> sed '/^;.*/d;/^$/{N;s/.*\n/+/}' game
+toto
titi
tutu
+lolilol
the game
[/spoiler]
+1 (1) -1 (0) Répondre
16-06-2016, 07h50
Message : #6
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: sed golf
coucou,

un peu à la bourre mais j'y vais de ma solution :
[spoiler]
Code :
sed '/^;/d;/^$/{n;s/.*/+&/}'
[/spoiler]
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 (1) -1 (0) Répondre


Atteindre :


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