2010-11-19 19 views
0

Je suis novice dans le domaine des scripts et de la programmation. Je cherche un guide sur la façon dont je peux analyser des informations spécifiques à partir d'un fichier de texte brut avec des milliers de lignes. Plus précisément, j'ai besoin d'analyser une adresse e-mail de chaque ligne. La ligne ressemble à ceci:Analyse de données, sélection de données après et avant certains caractères

"1272574001.H742765P10724.host.domain.com,S=4155:Return-path: `<[email protected]>` 

Je voudrais extraire l'adresse e-mail (à l'exclusion du < et >), puis effectuer une déclaration de mise à jour via MySQL avec l'adresse e-mail en tant que valeur.

Y a-t-il un exemple de cela quelque part que je pourrais utiliser pour baser mes besoins?

Quel outil de script utiliserais-je, comment puis-je dire à cet outil de saisir tout le contenu entre le < et >? Comment puis-je (dans un script) utiliser cette valeur pour mettre à jour un enregistrement DB?

p.s. Je essentiellement essaie de vous désabonner ces adresses e-mail à partir d'une base de données de contact ..

L'instruction SQL qui doit être exécuté est:

UPDATE contact_master SET subscribed='No' WHERE email=<value> 
+1

Que voulez-vous dire * hors $ et $ *? Quel $ et $? –

+1

@Sinan: C'est le double de l'argent. – Axeman

+0

Je pense qu'il veut dire les crochets autour de l'adresse e-mail. Je suppose qu'il ne pouvait pas savoir comment leur échapper en utilisant Markdown. –

Répondre

2

Vous semblez être à la recherche d'expressions régulières. Je vous suggère de lire perlre (disponible en ligne here), faire quelque chose comme alors:

($addr) = /Return-path: `<([^>]+)>`/; 
0
sed -n '`s/<\([^>]\+\)>`$/\1/' inputfile | while read -r address 
do 
    echo "UPDATE contact_master SET subscribed='No' WHERE email='$address'" 
done | mysql databasename