2016-12-05 15 views
-1

ファイルから単語を選択し、次の行まで他の行をコピーしたいと思います。mysqlの低速ログから特定の出力用のスクリプトを作成する

私は以下のようにmysqlの低速クエリを持っています。それから私は現在の日付時間のクエリを選択し、次の#までを選択します。

同じようにご案内ください。

# Time: **161205 10:27:39** 
# localhost [] 
# Query_time: 5.517501 Lock_time: 0.034388 Rows_sent: 50 Rows_examined: 27061434 
SET timestamp=1480913859; 
SELECT ,NULL,NULL,(SELECT 
        GROUP_CONCAT(project_master_name) 
       FROM 
        project_inquiry_detail pid,project_master pm 
       WHERE 
       order by T.InquiryDate desc , TL.rowid desc limit 0,50; 
**# Time: 161205 14:53:50** 
+0

これは広すぎます。何を試しましたか? [mcve] – fedorqui

+0

を提供してください。あなたがこれをやりたい理由を述べることもお勧めです。あなたは車輪を再発明しているかもしれません。たぶんあなたはペルコナツールからpt-query-digestを探していますか? – fancyPants

+0

@fedorqui grep、awk、sedコマンドを試しましたが、期待された出力が得られません。 –

答えて

0

これはあなたが探しているものですか?

sed -n -r -e '/^SELECT /p; /^(SELECT |#)/!{p};' mysql.log 
+0

私はそれを試みましたが、今は動作します。 –

+0

出力には何がありますか?エラーまたは間違った結果? –

0

この1つの論理は単純に(-nスイッチ)「そう言われない限り、何も印刷しない」との間(および含む)のみの行を印刷している私

sed -n -r '/^SELECT/,/^#/p' slow.log 

のために働くSELECTで最初の行には#が含まれています。

+0

感謝@fancyPants今、sed -n -r -e '/ 161205 /、/ ^#/、/ use/p'/tmp/logのようなパターンをもう1つ追加したいのですが、sed:-e expression# 1、char 14:unknown command: '、 ' –

+0

まあ、構文は'/from /、/ to/command(printのためのpのような) 'と似ています。だからあなたはあまりにも多くのパラメータをそこに持っています。あなたのsedスクリプトは何をすべきですか?ありがとう。 – fancyPants

+0

ありがとう。/^#/代わりに最初のコマンドと動作で/; /を使用してください。 –

関連する問題