![]() |
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。
|
|
Googleのunix.com
|
|||||||
| シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。 |
その他のUNIXおよびLinuxフォーラムトピックは参考にすること
|
||||
| スレッド | スレッドスターター | フォーラム | 返信 | 最後の投稿 |
| 記録は、記録には、キーワードに基づいてカウント | aemunathan | シェルプログラミングとスクリプティング | 4 | 2009年3月3日 08:39午前 |
| 条件に基づいてファイルを検証する | trichyselva | シェルプログラミングとスクリプティング | 8 | 2009年1月2日 08:51午前 |
| numが必要にファイル1のレコードがファイル2のレコードを確認するには、ベースにいくつかのcondnsを設定する | mavesum | シェルプログラミングとスクリプティング | 3 | 2008年11月26日 10:48午前 |
| 行数を抽出条件に基づい | prvnrk | シェルプログラミングとスクリプティング | 4 | 2008年10月17日 06:24午前 |
| レコードがない場合のファイル内のレコードヘッダーとプレビューなしに数を数える | guiguy | シェルプログラミングとスクリプティング | 2 | 2007年6月7日 01:15午後 |
![]() |
|
|
LinkBack | スレッドツール | このスレッドを検索 | スレッドを評価 | 表示モード |
|
|
|
||||
|
条件に基づいてレコードをカウントするためのAwkを使用していない
やあ
..... 200906051400,200906051500,200906051600私のようにフォルダ名に日付と時刻スタンプを持つファイルを過ごしていますので、毎日24ファイルが生成されます 私はこの24のファイルの特定の日々のことをする必要がある ファイルは、データなどが含まれて コード:
200906050016370 0 1244141195225298lessrv3 BSNLSERVICE1 BSNLSERVICE1 2128 LOCATIONMANAGER SLIR 919443200299 MSISDN ASC 919443200299 0 SUCCESS 1244141195225298less 919443200299 124414 79.301938811.6885305NORMAL DELAY_ WGS84 200906050016440 0 1244141197503299lessrv3 BSNLSERVICE1 BSNLSERVICE1 2139 LOCATIONMANAGER SLIR 919449838266 MSISDN ASC 919449838266 0 SUCCESS 1244141197503299less 919449838266 124414 74.739722013.3302837NORMAL DELAY_ WGS84 200906050017070 0 1244141224604306lessrv3 BSNLSERVICE1 BSNLSERVICE1 2128 LOCATIONMANAGER SLIR 919448010097 MSISDN ASC 919448010097 1 SYSTEM FAILURE 1244141224604306less 919448010097 124414 NORMAL DELAY_ WGS84 200906050017110 0 1244141227460308lessrv3 BSNLSERVICE1 BSNLSERVICE1 2128 LOCATIONMANAGER SLIR 919449838266 MSISDN ASC 919448010098 1 SYSTEM FAILURE 1244141227460308less 919449838266 124414 NORMAL DELAY_ WGS84 20090605140148 1204702370366140lessrv3 RTMS 0 TRACKING tlrep 0 SUCCESS 1 WGS84 200906051402100 0 1195202147789210lessrv3 RTMS RTMS LOCATIONMANAGER SLIR 919446001620 MSISDN ASC 919446001620 526 INACTIVE SUBSCRIBER 1195202147789210less 124419 NORMAL DELAY_ WGS84 200906051402100 0 1195202147789210lessrv3 RTMS RTMS LOCATIONMANAGER SLIR 919446001618 MSISDN ASC 919446001618 526 INACTIVE SUBSCRIBER 1195202147789210less 124419 NORMAL DELAY_ WGS84 200906051402100 0 1195202147789210lessrv3 RTMS RTMS LOCATIONMANAGER SLIR 919446001617 MSISDN ASC 919446001617 526 INACTIVE SUBSCRIBER 1195202147789210less 124419 NORMAL DELAY_ WGS84 私は以下の操作を行うにはスクリプトが必要 1 。このフィルタを適用する)は、レコードを4ドルと6ドル( \u003d\u003d BSNLSERVICE1と$ 6 \u003d\u003d 2128 $ 4例に基づいており、その日の全レコード数( 20090605 * ) 出力必要です: BSNLSERVICE1 2128 \u003d\u003d 3 2 。 $ 14 (つまり、成功、失敗)に基づいてフィルタリングする)は、レコードを4ドルと6ドル( \u003d\u003d BSNLSERVICE1と$ 6 \u003d\u003d 2128 $ 4例に基づいており、 ( 20090605 * )とグループの日レコードの合計数 出力必要です: BSNLSERVICE1 2128サクセス\u003d\u003d 1 システム障害BSNLSERVICE1 2128 \u003d\u003d 2 3 。このフィルタを適用する) 、グループ$ 9 (例: 919448010098 、 919446001618 )に基づいて、 ( 20090605 * ) $ 9の日それぞれのレコードの合計数のレコードが4ドルと6ドル( \u003d\u003d BSNLSERVICE1と$ 6 \u003d\u003d 2128 $ 4例に基づいている 出力必要です: 919449838266 2 919448010097 1 出力は4ドルと6ドルのBSNLSERVICE1 \u003d\u003d \u003d\u003d 2128 ..他のもの( $ 4 \u003d\u003d RTMS )のみ必要とされていないする必要があります。 pls私を助けて 編集aemunathanで最終; 2009年6月5日に 09:33午前.. |
|
||||
|
このお試しください:
コード:
awk -v day="20090605" -v serv="BSNLSERVICE1" -v val="2128" '
$1 ~ day && $4==serv && $6==val {
s1++;a[$14]++;b[$9]++
}
END{
print serv,val, "=" s1 "\n"
print serv,val, a["SUCCESS"]
print serv,val, a["SYSTEM"] "\n"
for(i in b){print i, b[i]}
}' file
|
|
||||
|
こんにちはpanyam 、フランクリン
私panyam有用な結果を与えることで、その方法を提案した。 ここに私の順番になるように要請した。 コード:
1.
awk '$4=="BSNLSERVICE1"&&$6=="2128" { count++ } END { print "BSNLSERVICE1-->2128-->" count }' 20090604*
2.
awk '$4=="BSNLSERVICE1"&&$6=="2128"{ b[$14]++} END {for(i in b){print i, b[i]} }' 20090604*
3.
awk '$4=="BSNLSERVICE1"&&$6=="2128"{ b[$9]++} END {for(i in b){print i, b[i]} }' 20090604*
実際に私はそれで毎晩2:00午前スケジュールを設定する必要があると私は、 dateコマンドからのファイル名を抽出する必要がある を例に取ることができます 今夜の出力2.00午前 コード:
date +'%Y%m%d' 私は、 Awkの一部のファイル名20090605 *のようにファイル名を与える必要がある... フランクリンと....私はこの方法を使用 コード:
#!/usr/xpg4/bin/awk
awk -v day="20090605" -v serv="BSNLSERVICE1" -v val="2128" '
$1 ~ day && $4==serv && $6==val {
s1++;a[$14]++;b[$9]++
}
END{
print serv,val, "=" s1 "\n"
print serv,val, a["SUCCESS"]
print serv,val, a["SYSTEM"] "\n"
for(i in b){print i, b[i]}
}' 200906051859
引用:
|
|
||||
|
昨日datecalcをPerderaboの日付を取得するにはスクリプトを使用することができます。
あなたのスクリプトの名前と同じディレクトリにこのスクリプトの場所 datecalc して、実行可能ファイル: 日間2日間経過 あなたのスクリプトのように見える必要があります: コード:
#!/bin/ksh
dat=$(./datecalc -a $(date +"%Y %m %d") - 1)
day=$(/usr/xpg4/bin/awk -v d="$dat" 'BEGIN {split(d,a," ");day=sprintf("%s%02s%02s",a[1],a[2],a[3]);print day}')
/usr/xpg4/bin/awk -v d="$day" -v serv="BSNLSERVICE1" -v val="2128" '
$1 ~ day && $4==serv && $6==val {
s1++;a[$14]++;b[$9]++
}
END{
print "Filename: " FILENAME "\n"
print serv,val, "=" s1 "\n"
print serv,val, a["SUCCESS"]
print serv,val, a["SYSTEM"] "\n"
for(i in b){print i, b[i]}
}' $day*
|
| ビット受賞/ Franklin52にこのポストに請求 | |||
| 日付 | ユーザ | コメント | 量 |
| 2009年6月6日 | aemunathan | 優秀な仕事 | 50,000 |
|
||||
|
やあ
おかげで多くの人...その結果を見ていい... 私は詳しい情報が必要です。実際sqlloaderのテーブルに挿入し、その結果を使用しています。ここに僕もDDは前の日に印刷して、月、年の形式 私はこの方法で試した コード:
#!/bin/ksh
dat=$(./datecalc -a $(date +"%Y %m %d") - 1)
da_te=$(date +'%d')
da=$(($da_te-1))
mon=$(date +'%b')
year=$(date +'%Y')
host=$(hostname)
day=$(/usr/xpg4/bin/awk -v d="$dat" 'BEGIN {split(d,a," ");day=sprintf("%s%02s%02s",a[1],a[2],a[3]);print day}')
/usr/xpg4/bin/awk -v d="$day" -v serv="BSNLSERVICE1" -v val="2128" -v daet="$(($da)-($mon)-($year))" -v ho="$host"'
$1~day && $4==serv && $6==val {
s1++
}
END{
print daet, host,s1
}' $day*
事前に感謝 編集aemunathanで最終; 2009年6月7日に 02:36午後..理由:もう一つの要件!!!!!! |