2009-08-05 9 views
2

im essayant de traiter un csv et le rendre plus facile pour le tri, et j'ai besoin d'enlever le temps et le tiret de celui-ci. le fichier contient des entrées comme celui-ci:besoin d'aide retirer du temps d'un fichier csv

James,07/20/2009-14:40:11 
Steve,08/06/2006-02:34:37 
John,11/03/2008-12:12:34 

et l'analyse syntaxique dans ce:

James,07/20/2009 
Steve,08/06/2006 
John,11/03/2008 

im devinant sed est l'outil idéal pour ce travail?

merci pour votre aide.

Répondre

1
cut -d '-' -f 1 file 

Modifier après commentaire:

sed 's/-[0-9][0-9]:[0-9][0-9]:[0-9][0-9]//g' file 
+0

que se passe-t-il si le nom contient un tiret? – nmuntz

+0

Si le nom est quelque chose comme Al-Ashrad alors la sortie sera Al, ce qui est faux, merci de le signaler. J'ai modifié en conséquence. –

1

Python

import csv 
import datetime 

rdr = csv.reader(open("someFile.csv", "rb")) 
rows = list(reader) 
rdr.close() 

def byDateTime(aRow): 
    return return datetime.datetime.strptime(aRow[1], "%m/%d/%Y-%H:%M:%S") 

rows.sort(key= byDateTime) 

wtr = csv.writer(open("sortedFile.csv", "wb")) 
wtr.writerows(rows) 
wtr.close() 
0

il suffit d'utiliser awk

awk -F"," '{ split($2,_,"-"); print $1,_[1] }' OFS="," file 
0

Oui, je pense que sed est l'outil idéal pour le travail:

 
sed 's/-[:0-9]*$//' file 
Questions connexes