2010-11-19 60 views
0

我是shell腳本編程和編程的新手。我正在尋找一個關於如何從一個純文本文件中解析數千行特定信息的指南。具體而言,我需要解析每行的電子郵件地址。該行看起來是這樣的:解析數據,在某些字符之前和之後選擇數據

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

我想提取電子郵件地址(不包括<>),然後通過mysql用的電子郵件地址作爲值執行UPDATE語句。

有沒有這樣一個例子,我可以用來根據我的需求?

我會使用哪些腳本工具,我該如何告訴該工具以獲取<>之間的所有內容?

那麼我怎麼(在一個腳本中)使用這個值來更新數據庫記錄?

p.s.我基本上是試圖從聯繫人數據庫退訂這些電子郵件地址..

需要運行的SQL語句是:

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

你是什麼意思*不包括$和$ *? $和$是什麼? – 2010-11-19 19:06:05

+1

@Sinan:這是錢的兩倍。 – Axeman 2010-11-19 22:36:56

+0

我認爲他是指電子郵件地址的尖括號。我想他無法弄清楚如何使用Markdown來逃避它們。 – 2010-11-20 07:49:02

回答

2

你似乎在尋找的正則表達式。我建議您閱讀perlre手冊頁(可在網上here),然後做這樣的事情:

​​
0
sed -n '`s/<\([^>]\+\)>`$/\1/' inputfile | while read -r address 
do 
    echo "UPDATE contact_master SET subscribed='No' WHERE email='$address'" 
done | mysql databasename 
相關問題