![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Несколько области сепараторов в AWK? (Первый пробел, затем двоеточие) | doubleminus | UNIX для чайников Вопросы И Ответы | 3 | 04-27-2008 04:28 PM |
| Мне нужна помощь подсчета области и области с использованием сепараторов Nawk | scrappycc | Shell программирование и сценарии | 3 | 02-06-2008 11:47 PM |
| Вы можете перенаправить несколько файлов для ввода? | Matrix_Prime | UNIX для чайников Вопросы И Ответы | 4 | 02-27-2005 07:07 PM |
| Awk несколькими полевыми Сепараторы | Tonka52 | Shell программирование и сценарии | 7 | 04-07-2004 10:37 PM |
| Результат Множественное поле из базы данных | Dennz | UNIX для чайников Вопросы И Ответы | 3 | 09-01-2003 01:41 PM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Я видел несколько постов здесь ссылок, как обрабатывать более одного поля ввода разделителя в AWK. Я понял я хотел бы поделиться, как я (только!) Понял, как превратить эту строку в лог-файл:
90000000000000000000010001 имя D0.90000000000103787900010001QF840840916070000007085814Y216254 @ D1111111111111111 \u003d 1107xxxxxxxxxxxxxxx x919MENCHIES в этом формате: 90000000000000000000010001, имя, 840840916070000007085814Y216654, 1111111111111111,1107,919 MENCHIES Я весь сценарий, поскольку это всего лишь один шаг в процессе превращения бревна в полезную информацию, но Heres соответствующей части. # Автор: kinksville # Дата: 24 апреля 2008 # Доработки: 24 апреля 2008 # Редакция: Редакция 1.00 # Другие файлы: cclookup.s, cclookup.rep # Изменений: # 24 апреля 2008 года: Первоначальный создания сценария. # # Конец изменений. BEGIN ( FS \u003d "[\. QF \ @ D \u003d X] +" ФУСШ \u003d "," ) # Первой итерации из @ D поиска зачистки в с. Характер и включив ФУСШ. / \ @ D / # (поиска для любой строки, содержащие строку @ D report2 \u003d "cclookup.rep2"; # Определить report2 переменной. Доклад \u003d "cclookup.rep"; # Определить докладе переменной. num_cclookup + +; # Получить число запросов авторизации. Версия для печати $ 1, $ 2, $ 5, $ 6, $ 7, $ 8> доклада; Версия для печати $ 0> report2; ) # Конец на @ D поиска. Ключевым является тот факт, что AWK принимают регулярное выражение в виде файла разделителем. Это регулярное выражение FS \u003d "[\. QF \ @ D \u003d X] +" соответствует пространств,. QF строка, строка @ D, то \u003d, а также символ X. В + после трейлинг кронштейн является ключевым, поскольку это позволяет в течение 1 или более экземпляров какого-либо из персонажей сопровождается регулярным выражением. Это означает, что X и XXXXXX, так как единое поле разделителя. Я по-прежнему необходимо работать по выходным, так как теперь мне нужно обрезать имя покинуть конце последнего поля. К сожалению, этот номер в последнем поле можно в любом диапазоне от 9999999 до 1, и что это часть, которую я хочу сохранить. Может быть, в [^ 0-9] + выражения? |
|
||||
|
Я был немного смущает тот факт, что QF и @ D работали тоже. Я думаю потому, что [QF] + спички QQ QQQ QF QQFF т.д.
Это не так, как чистое я бы хотел, но эти персонажи всегда в том, что особое место в журнале сообщений, так что это то, что я хочу его. Я югу в слова и посмотреть, что происходит слишком ![]() |
|
||||
|
Нет такого счастья
Цитата:
![]() Ни один из этих фрагментов работала правильно для меня. ПС синтаксиса, который использовался, вероятно, изменил ряде областей, и поэтому они не все получат распечатать. Второй фрагмент просто казалось бы добавить № 1 до последнего места т.е. (, 619MENCHIES1). Я сыграть с ним еще и посмотреть, что происходит. |
|
||||
|
Код:
#This script scans the appropriate log file and copies lines containing authorization requests to the output.
#All output is comma separated.
#Author: kinksville
#Date: April 24, 2008
#Revised: April 25, 2008
#Revision: Revision 1.01
#Other files: cclookup.s, cclookup.rep
#Changelog:
#April 24, 2008: Initial creation of the script.
#April 25, 2008: Updated the regex for the input FS to match multiple characters.
#
#End changelog.
BEGIN {
#Input field separators will match any of the following characters/strings: blank space, . , QF, @D, =, x (repeating).
#The + on the outside of the brackets will allow it to match 0 or more instances of any of the characters/strings in any combination.
#% Any comments with the % sign are temporarily there for testing purposes.
FS="[ \. QF \@D = x]+"
#Output field separator is defined as a comma.
OFS = ","
}
#@D search, stripping out the field separator characters and inserting a OFS.
/\@D/ { #Search for any line containing the string @D
last_field=$8 ;
sub(/[^0-9]*/,"",last_field );
dollar_val=last_field/100 ;
report="cclookup.rep"; #Define report variable.
num_cclookup++; #Get number of auth requests.
field1=$1 ;
field2=$2 ;
field3=$5 ;
field4=$6 ;
field5=$7 ;
printf ("%s,%s,%s,%s,%s,$%-.2f\n",field1,field2,field3,field4,field5,dollar_val) > report
#print $1, $2, $5, $6, $7, $8 > report; #Print fields 1-2 with the OFS between them to report.
} #End of the @D search.
Это немного о kludge, но она работает. Я не мог, как представляется, получить last_field переменной для вывода на печать вне зависимости от того, что я сделал с помощью равниною печатать команды, которая в конце концов, почему я пошел с printf вместо. Это также позволило мне вывода результатов в десятичной форме, поскольку эти цифры до MENCHIES были долларовом выражении. Последний раз редактировалось kinksville; на 04-25-2008 06:13 PM.. Причина: Удалено полное название от комментариев. |
![]() |
| Закладки |
| Теги |
| AWK, AWK отделкой, отделка, отделка AWK |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|