2010-12-05 6 views
0

J'essaie d'importer un fichier tsv dans un mysql db mais j'ai des problèmes car le fichier n'a pas de délimiteurs uniques pour identifier où une nouvelle ligne commence. Le seul identifiant unique est une date suivie d'un espace suivi de l'heure. Exemple: 6/19/2010 16:04:43Comment j'analyserais dans un script bash date_value _space_ date_value

Est-ce que quelqu'un pourrait me diriger dans la bonne direction ou m'aider à faire un script bash qui met un point-virgule ";" devant cette chaîne. Le résultat final sera ;6/19/2010 16:04:43

La partie délicate est que dans ce fichier il y aura d'autres champs de date et d'autres champs de temps mais c'est la seule chaîne qui aura un espace entre les deux.

Répondre

1

cat file | sed 's#[0-9]\{1,2\}/[0-9]\{1,2\}/[0-9]\{4\} #;&#g' >resultfile. Testez avant d'utiliser.

+0

Ce script est correct pour le cas ci-dessus, date espace temps, sauf qu'il le fait également lorsque le format de la chaîne est l'heure de la date. Y a-t-il un moyen de se débarrasser du second scénario? – Igor

+0

@ user493071 voir la mise à jour. mettre "espace". – khachik

+0

Il est presque parfait mais pour une raison quelconque, certaines chaînes ne sont pas touchées. exemple: 6/5/2010 17:00:30 7/3/2010 16:53:50 Auriez-vous une idée de pourquoi? – Igor