![]() |
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Запись рассчитывать основаны на ключевое слово в отчетах | aemunathan | Shell программирование и сценарии | 4 | 03-03-2009 08:39 AM |
| Проверка файла основаны на условиях | trichyselva | Shell программирование и сценарии | 8 | 01-02-2009 08:51 AM |
| Основываясь на количество записей в file1 нужно проверить записи в file2 установить некоторые condns | mavesum | Shell программирование и сценарии | 3 | 11-26-2008 10:48 AM |
| Экстракт линий основана на нескольких условиях | prvnrk | Shell программирование и сценарии | 4 | 10-17-2008 06:24 AM |
| Граф Нет записей в файл без подсчета Header и прицепов отчеты | guiguy | Shell программирование и сценарии | 2 | 06-07-2007 01:15 PM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
используя 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 (т.е. $ 4 \u003d\u003d BSNLSERVICE1 и $ 6 \u003d\u003d 2128) и подсчитать общий отчетов для ДЕНЬ (20090605 *) OUTPUT НАДЛЕЖИТ: BSNLSERVICE1 2128 \u003d\u003d 3 2. Приходится фильтровать записи основана на $ 4 и $ 6 (т.е. $ 4 \u003d\u003d BSNLSERVICE1 и $ 6 \u003d\u003d 2128) и подсчитать общий отчетов для ДЕНЬ (20090605 *) и группы в $ 14 (то есть успеха, FAILURE) OUTPUT НАДЛЕЖИТ: BSNLSERVICE1 2128 УСПЕХА \u003d\u003d 1 BSNLSERVICE1 2128 сбоя системы \u003d\u003d 2 3. Приходится фильтровать записи основана на $ 4 и $ 6 (т.е. $ 4 \u003d\u003d BSNLSERVICE1 и $ 6 \u003d\u003d 2128), группы на основе $ 9 (например, 919448010098, 919446001618), и подсчитать общее отчетов для ДЕНЬ (20090605 *) для каждого четко $ 9 OUTPUT НАДЛЕЖИТ: 919449838266 2 919448010097 1 вывод следует из $ 4 \u003d\u003d BSNLSERVICE1 и $ 6 \u003d\u003d 2128 только .. прочего ($ 4 \u003d\u003d RTMS) не требуется. Помоги мне из PLS Последний раз редактировалось aemunathan; на 06-05-2009 09:33 AM.. |
|
||||
|
то вроде этого, вы можете попробовать:
Код:
awk '$4=="BSNLSERVICE1"&&$6=="2128" { count++ } END { print "BSNLSERVICE1-->2128-->" count }' file_name.txt
|
|
||||
|
Попробуйте это:
Код:
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, и мне нужно для получения файла с момента команда позволяет взять пример сегодня 2.00 утра ouput из Код:
date +'%Y%m%d' Мне нужно дать имя файла 20090605 * в имени файла часть из AWK ... и Франклина .... я использовал этот способ Код:
#!/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 этой темы | |||
| Свидание | Пользователь | Комментировать | Сумма |
| 06-06-2009 | aemunathan | Отличная работа, проделанная | 50.000 |
|
||||
|
Привет
Огромное спасибо человеку ... ее приятно видеть результат ... Мне нужно больше информации. фактически используется sqlloader вставить результат в виде таблицы. Здесь я хочу напечатать предыдущей дате, а в ДД-МЕС-ГГГГ формате Я пробовал так Код:
#!/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; на 06-07-2009 02:36 PM.. Причина: еще одно требование !!!!!! |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|