Sed et execution d'une commande

Sed et execution d'une commande - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-08-2007 à 12:53:59    

Salut,
 
Je me pose une petite question existentielle ... est-il possible avec la commande sed d'éxecuter une commande à l'intérieur shell ...
 
En fait, je veux trouver toutes les lignes correspondantes à un motif ... J'ai le fichier suivant  
 
AAA_001
BBB_002
...
AAA_002
AAA_003
AAA_004
AAA_005
...
 
Et je souhaiterai imprimer juste à coté un numéro ... Donc j'avais pensé à l'expression réguliére :

Code :
  1. ^AAA_\(.*\)


 
Mais je me demande si il est possible d'executer une commande genre printf %03d $i  à la suite d'un sed...
 
Voici le type de résultat que je souheterais obtenir ...

Code :
  1. AAA_001 000
  2. BBB_002
  3. ...
  4. AAA_002 001
  5. AAA_003 002
  6. AAA_004 003
  7. AAA_005 004
  8. ...


 
Est-ce possible de faire cela avec un sed ou pas ?

Reply

Marsh Posté le 27-08-2007 à 12:53:59   

Reply

Marsh Posté le 27-08-2007 à 13:42:27    

je ne connais pas assez sed pour pouvoir répondre à ta question. Mais sinon, voici une solution en perl :

perl -ne 'chomp; print; printf "%03d", $i++ if /^AAA_.*/; print "\n";'


 
Je suis sûr qu'il y aurait une manière plus simple d'écrire ça, mais là je vois pas... :sweat:


---------------
TriScale innov
Reply

Marsh Posté le 27-08-2007 à 13:48:00    

[:cerveau huit] ta soluce Franceso ;)
 
Il me semble que sed ne permet pas ce genre de fantaisies ... awk à la limite, mais en perl c'est [:cerveau atsuko]
 

Spoiler :

t'aurais quand même pu faire un peu d'obfuscate [:cerveau cupra]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 27-08-2007 à 14:01:06    

wedgeant a écrit :

[:cerveau huit] ta soluce Franceso ;)
 
Il me semble que sed ne permet pas ce genre de fantaisies ... awk à la limite, mais en perl c'est [:cerveau atsuko]
 

Spoiler :

t'aurais quand même pu faire un peu d'obfuscate [:cerveau cupra]



Et que penses-tu de ça ? C'est plus court mais peut-être un peu plus dur à lire...  :whistle:  

perl -pne 's/$/${\(sprintf ("%03d", $i++))}/ if /^AAA_.*/;'

Message cité 1 fois
Message édité par franceso le 27-08-2007 à 14:12:22

---------------
TriScale innov
Reply

Marsh Posté le 27-08-2007 à 14:06:44    

franceso a écrit :


Et que penses-tu de ça ? C'est plus court mais peut-être un peu plus dur à lire...  :whistle:  

perl -pne 'if (/^AAA_.*/){ s/$/${\(sprintf "%03d", $i++)}/};'



[:cerveau love]    
 
[:cerveau star]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 27-08-2007 à 17:12:35    


 
Merci à tous, ben ma question était aussi de savoir si on pouvait executer une commande dans un sed ... en résumé, je pense que cela n'est pas faisable en gros ... dommage mais merci quand même à tous pour vos réponses :)
 
En awk, on doit pouvoir faire un truc aussi ... ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed