2012-10-04 54 views
0

我希望能夠快速做到這樣:是否sed/awk爲此工作?改用別的東西?

我有一個MySQL數據庫表訪問我的網站。這些列是日期,IP地址,瀏覽器,URL,引用者。

我想這樣做:在某一天

    1. 抓住所有的行刪除所有的行,並確保在每個15分鐘的間隔,沒有兩行具有相同的IP地址

    對於這些類型的問題SED/AWK適合呢?或者一些腳本語言比如Ruby更合適?

    我不太「得到」什麼SED/AWK實際上是。隨意簡要解釋一下。謝謝!

  • 回答

    2

    桑達和Awk意爲文字處理工具。因此,他們可以在數據以良好的文本格式(通常相當於人類可讀)呈現的情況下提供幫助。

    SQL數據庫通常以二進制格式存儲,對於這些數據庫,這些工具是而不是的最佳選擇。即使是一些格式是人類可讀,與其他工具(XML可能是最好的例子)更好。

    如果您可以將數據庫導出爲CSV(逗號分隔值電子表格),則可能有更好的機會使用這些工具處理它。

    否則,使用Perl/Python/Ruby和適當的SQL模塊訪問數據會更容易。

    希望這有助於=)

    2

    我建議使用SQL實現此目的。爲什麼你存儲在數據庫中的數據擺在首位那是不是?

    0

    SedAwk並不適用於這個問題,他們是文本處理。我建議將PythonPHP與相關的SQL庫/模塊結合使用,並使用cron來安排腳本的執行。腳本將沿着這個(用於PHP)的行。

    $db_host = 'localhost'; 
    $db_user = 'mysql_user' 
    $db_pwd = 'supersecret' 
    
    $Date = '10/3/2010' #Whatever the date format is in the DB 
    mysqlconnect($db_host, $db_user, $db_pwd); 
    
    $result = mysql_query("SELECT * FROM db.table WHERE time=$Date); 
    
    while (!$row = mysql_fetch_row($result)) 
        echo $row 
    
    # Should check IP before deletion - **WARNING** Will delete all data from table 
    mysql_query("DELETE FROM db.table") 
    
    mysql_free_result($result) 
    

    注:此不做行檢查beforing刪除,但你如何開始開發一些想法。