The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Скрипт добавления символа в нужное место ЛОГа"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Скрипт добавления символа в нужное место ЛОГа"  
Сообщение от ZXprSL email on 08-Дек-07, 18:48 
Подскажите как на Перле или может ещё на чём в нужное место (т.к. в ЛОГ-файле все поля в одних и тех же местах) при условии, что слово наинается на 77 или 76 подставить в начало тройку,т.е. чтоб на выходе получить результат в том поле 377 или 376 ??

Скрипт просто поиска по шаблону и замены не подходит, т.к. в других полях файла тоже может быть совпадение.

примерный алгаритм:

Если строка начианется с символа "N" и 18й символ имеет значение "7" а 19е "6", то
между 17м и 18м символом воткнуть символ "3" , чтоб при этом как при обычном форматировании текста в текстовом редакторе всё содержимое с права сдвинулось на право на один символ,таким образом, что вставленный символ "3" оказался на 18м месте.. и далее удалить пробел с 24го места.

т.е. на входе:

N 115 00 T013028 76005   11/28 23:04 00:08:44
&       0000    0000   375434XXXXXXXXXX  

а на выходе должно быть так:

N 115 00 T013028 376005  11/28 23:04 00:08:44
&       0000    0000   375434XXXXXXXXXX  

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Скрипт добавления символа в нужное место ЛОГа"  
Сообщение от vladin (??) on 08-Дек-07, 19:10 
Для вывода на экран

perl -p -e 'if( substr($_,17,2) =~ /7[67]/ ) { substr($_,23,1) = ""; substr($_,17,0)="3";}' /path/to/log

Для правка файла

perl -pi -e 'if( substr($_,17,2) =~ /7[67]/ ) { substr($_,23,1) = ""; substr($_,17,0)="3";}' /path/to/log

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Скрипт добавления символа в нужное место ЛОГа"  
Сообщение от ZXprSL email on 08-Дек-07, 21:38 
>Для вывода на экран
>
>perl -p -e 'if( substr($_,17,2) =~ /7[67]/ ) { substr($_,23,1) = "";
>substr($_,17,0)="3";}' /path/to/log
>
>Для правка файла
>
>perl -pi -e 'if( substr($_,17,2) =~ /7[67]/ ) { substr($_,23,1) = "";
>substr($_,17,0)="3";}' /path/to/log

Спасибо, работает :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру