The UNIX and Linux Forums  
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
特定のメッセージが表示されるまでは、ファイルgrep'ing pallak7 シェルプログラミングとスクリプティング 3 2009年4月23日 11:48午前
特定のディレクトリに対して、 grep'ingとファイルを移動するには、出力を用いて JayC89 シェルプログラミングとスクリプティング 1 2008年12月6日 03:37午前
シェルスクリプトの高速化(ループを見つけるのはgrep ) デイブStockdale UNIXのダミー質問と回答のため 8 2008年8月11日 04:36午前
ファイル処理の高速化 dlam シェルプログラミングとスクリプティング 4 2008年7月19日 12:47午後
Sunは、 Solaris環境でのコンパイルが高速化する swamymns シェルプログラミングとスクリプティング 2 2006年7月12日 12:06午後

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2009年4月21日
elinenbe elinenbe is offline
登録ユーザー
  
 

参加日: 2008年12月
投稿数: 8
Question bashのgrep'ingとの塊sed'ing ...ログ解析を急いで助けが必要です。

私は、 20 〜 80 + MBのサイズでは、ログファイルの特定のタイプされているファイルがあります。

これは、複数のプロセスの1つのスレッドと、このプロセスが記録されます。そのため、ログファイルには、混乱の種です。例:

ログファイルのようになります: "日付時間-スレッドID -詳細"で、それぞれの日のための新しいファイルが作成されます
引用:
20090409 000122 - BD0 -オーダー123セッションを開始
20090409 000122 - BD0 -処理1
20090409 000122 - BD0 -その他の処理
20090409 000123 - EF0 -オーダー234セッションを開始
20090409 000124 - EF0 -処理
20090409 000124 - BD0 -処理2
20090409 000125 - BD0 -その他の処理
20090409 000125 - EF0 -処理
20090409 000125 - DD1 -キャンセル345セッションを開始
20090409 000125 - DD1 -処理
20090409 000126 - DD1 -処理2
20090409 000126 - BD0 -オーダー123をシャットダウン
20090409 000127 - 11F - 543クエリを開始セッション
20090409 000127 - 11F -処理
..
..
20090409 000135 - 11F - 543クエリをシャットダウン
..
20090409 000140 - EF0 -オーダー234をシャットダウン
..
..
..
20090409 000143 - DD1 -キャンセル345をシャットダウン
さて、ここからは、痛みになるとは...私は" "から"セッションの終了"が各スレッドIDのためにセッションを開始すると、行を抽出したり、別のファイルにダンプする必要があります。しかし、スレッドIDのCANは、 1日を通して複製される-が、通常は多くの時間。

セッションは30秒から4分ほどには、ログファイル( 〜 1200行) 、 20の同時セッションをすることができます最後にすることができます。

今、私は作品-は、非常にゆっくりと何かをしている。私がgrepping終了し、ファイルを繰り返しsedding 。ファイルが大きい場合には、膨大な時間がかかります。私は、ここに私、この最適化を支援していただきたいと思います。可能であれば、私はbashを使用するようにしたいのですが。

ありがとう、
エリック

ここに私は、作品ですが、しているコードです_slow_

コード:
    if [[ -e "$log_file" ]]
    then
        echo "parsing: "$log_file
        grep "starting session" $log_file | while read line 
        do
            thread=`echo $line | cut -d' ' -f4`
            sessiontype=`echo $line | cut -d' ' -f6`
            sessionnumber=`echo $line | cut -d' ' -f7`

            echo "  first line of session: "${line:0:25}"..."
            line2=`echo  - $thread - $sessiontype $sessionnumber shutting down`
            echo "  last line of session: "${line2:0:25}"..."
            sed -n "/$line/,/$line2/p" $log_file | grep " - $thread - ">session.$thread.$sessiontype.$sessionnumber
        done
    ....
これは私は、上記の例は以下のようにログを使用して生成されるファイルの数を与える:
引用:
ファイル: session.BD0.Order.123
20090409 000122 - BD0 -オーダー123セッションを開始
20090409 000122 - BD0 -処理1
20090409 000122 - BD0 -その他の処理
20090409 000124 - BD0 -処理2
20090409 000125 - BD0 -その他の処理
20090409 000126 - BD0 -オーダー123をシャットダウン

ファイル: session.DD1.Cancel.345
20090409 000125 - DD1 -キャンセル345セッションを開始
20090409 000125 - DD1 -処理
20090409 000126 - DD1 -処理2
..
..
..
20090409 000143 - DD1 -キャンセル345をシャットダウン

ファイル: session.11F.Query.543
20090409 000127 - 11F - 543クエリを開始セッション
20090409 000127 - 11F -処理
..
..
20090409 000135 - 11F - 543クエリをシャットダウン

ファイル: session.EF0.Order.234
20090409 000123 - EF0 -オーダー234セッションを開始
20090409 000124 - EF0 -処理
20090409 000125 - EF0 -処理
20090409 000140 - EF0 -オーダー234をシャットダウン
  #2固定リンク)  
Old 2009年4月21日
Franklin52 Franklin52 is offline Forum Staff  
モデレータ
  
 

参加日: 2007年2月
投稿数:4305
セッションが始まると仮定すると、セッションの最初の行" "この(テストしていません)で終了してみてください:

コード:
awk '{
  !a[$4]{a[$4]=$4; n[$4]="session."$4"."$6"."$7}
  a[$4]{print > n[$4]}
' file
使用nawkまたは/ usr/xpg4/bin/awk Solaris上の場合はエラーを発生します。

よろしく
  #3固定リンク)  
Old 2009年4月21日
elinenbe elinenbe is offline
登録ユーザー
  
 

参加日: 2008年12月
投稿数: 8
申し訳ありませんが、私はより具体的があるはずです。セッションの開始行のようなものをすべて終了:

20090409 000122 - BD0 -オーダー123クライアント12のポート34とのセッションを開始
20090409 000123 - EF0 -オーダー234クライアント347ポート38でセッションを開始
...

との両方のポートを動的な値をクライアントとしている。

ええ、私の取得エラー-私の下で、このCygwinを実行しているので、私nawkに簡単にアクセスしていない。
  #4固定リンク)  
Old 2009年4月21日
devtakh devtakh is offline
登録ユーザー
  
 

参加日: 2007年10月
場所:バンガロール
投稿数: 514
このしてください-
$ソート- k膜4ログファイル| awkは' NR \u003d\u003d 1 ( \u003d $ 4 ;テキスト\u003d "セッションの前へ。 " $ 4 " 。 " $ 6 " 。 " $ 7 ; printf ( " % sは\ Ñ % S "は、テキスト、 $ 0 ) ; getliine ) (場合(前へ! 〜 $ 4 ) (テキスト\u003d "セッション。 " $ 4 " 。 " $ 6 " 。 " $ 7 ; printf ( " % sは\ Ñ % S "は、テキスト、 $ 0 ) ;前へ\u003d $ 4 )他(印刷$ 0 ;前へ\u003d $ 4 ) ) '

このようなことを行います-

session.11F.Processing 。
20090409 000127 - 11F - Processing20090409 000127 - 11F -処理
20090409 000127 - 11F - 543クエリを開始セッション
session.BD0.More.Processing
20090409 000122 - BD0 -その他のProcessing20090409 000125 - BD0 -その他の処理
20090409 000126 - BD0 -オーダー123をシャットダウン
20090409 000122 - BD0 -オーダー123セッションを開始
20090409 000122 - BD0 -処理1
20090409 000124 - BD0 -処理2
session.DD1.Cancel.345
20090409 000125 - DD1 -キャンセル345 - DD1 - session20090409 000125処理を開始
20090409 000126 - DD1 -処理2
session.EF0.Order.234
20090409 000123 - EF0 -オーダー234 - EF0 -処理を開始session20090409 000124
20090409 000125 - EF0 -処理


乾杯、
Devaraj Takhellambam
  #5固定リンク)  
Old 2009年4月21日
Franklin52 Franklin52 is offline Forum Staff  
モデレータ
  
 

参加日: 2007年2月
投稿数:4305
この1つをお試しください:

コード:
awk '
{if !($4 in a){a[$4]=$4; n[$4]="session."$4"."$6"."$7}}
{if ($4 in a) {print > n[$4]}}
' file
よろしく
Closed Thread

ブックマーク

タグ
bashのはgrepセッド

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 08:26午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0