[RESOLU] [BASH] Récupérer une date dans une string

Récupérer une date dans une string [RESOLU] [BASH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 21-01-2010 à 22:56:25    

Bonsoir à tous,
 
Je viens voir les spécialistes pour une petite aide en bash.
 

#/bin/bash
 
string="Bla bla bla - bla bla bla - 21/01/10 - bla bla bla"
date= ???


 
Je veux récupérer la date. Je pensais à un awk ou sed avec une expression régulière mais je ne métrise malheuresement pas du tout ces commandes  :(   Il faut absolument que je m'y mette !!!
 
J'ai google un peu mais je ne trouve pas mon bonheur.
 
Merci d'avance pour votre aide


Message édité par frans0023 le 21-01-2010 à 23:17:21
Reply

Marsh Posté le 21-01-2010 à 22:56:25   

Reply

Marsh Posté le 21-01-2010 à 22:59:02    

tu as toujours le meme nombre de colonnes ?
 
colonne 1 - colonne 2 - ... - colonne date - colonne n
 
si c'est le cas cut suffit

Reply

Marsh Posté le 21-01-2010 à 22:59:20    

Code :
  1. string="Bla bla bla - bla bla bla - 21/01/10 - bla bla bla"
  2. awk -F'-' '{print $3}' <<< "$string"

Reply

Marsh Posté le 21-01-2010 à 23:02:03    

Malheuresement je n'ai pas le même nombre de colonnes :) Ca serait trop simple :)
 
Ca peut etre "bla bla bla - bla bla bla bla - 23/12/10"
ou "bla bla bla bla - 23/12/10"
 
Je pensais à une expression régulière type **/**/**
 
En tous cas vous répondez vraiment très vite !!!!!! Merci  :love:


Message édité par frans0023 le 21-01-2010 à 23:02:29
Reply

Marsh Posté le 21-01-2010 à 23:04:35    

Oui, merci ducon3d, on peux aussi se servir de cut :

Code :
  1. cut -d'-' -f3 <<< "$string"


ou encore :

Code :
  1. IFS='-' read a b date e <<< "$string"
  2. echo $date


Message édité par sputnick le 21-01-2010 à 23:14:03
Reply

Marsh Posté le 21-01-2010 à 23:10:23    

Ha, ben suffit de demander ;)

Code :
  1. perl -lane 'for (@F) { print $_ if /\d+\/\d+\/\d+/;}' <<< "$string"


 
Si tu a un grep GNU récent :

Code :
  1. grep -oP '\d+/\d+/\d+' <<< "$string"

Message cité 2 fois
Message édité par sputnick le 21-01-2010 à 23:12:30
Reply

Marsh Posté le 21-01-2010 à 23:12:23    

sputnick a écrit :

Ha, ben suffit de demander ;)

Code :
  1. perl -lane 'for (@F) { print $_ if /\d+\/\d+\/\d+/;}' <<< "$string"



Ouah en perl !  :love:  Génial !!
 
Merci beaucoup, je vais essayer...

Reply

Marsh Posté le 21-01-2010 à 23:12:53    

You're welKome ;)

Reply

Marsh Posté le 21-01-2010 à 23:16:14    

sputnick a écrit :

Ha, ben suffit de demander ;)

Code :
  1. perl -lane 'for (@F) { print $_ if /\d+\/\d+\/\d+/;}' <<< "$string"


Si tu a un grep GNU récent :

Code :
  1. grep -oP '\d+/\d+/\d+' <<< "$string"



Le perl, ça marche parfaitement !!!
 
grep: Support for the -P option is not compiled into this --disable-perl-regexp binary
Sur une debian 5.0.
 
Merci encore


Message édité par frans0023 le 21-01-2010 à 23:16:59
Reply

Sujets relatifs:

Leave a Replay

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