The OpenNET Project / Index page

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

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

"Замена по шаблону + мат.операция"  +/
Сообщение от ciwl (ok) on 25-Июн-12, 14:59 
Есть файл вида

Коммутатор ABC - Порт 1 - Сеть SECURITY
SOMETEXT
Коммутатор ABC - Порт 2 - Сеть SECURITY
SOMETEXT

Нужно "Порт N" увеличить на 40

Sed так не умеет, perl не ловит русские буквы. Подскажите решение задачи

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Замена по шаблону + мат.операция"  +/
Сообщение от ciwl (ok) on 25-Июн-12, 16:59 
#!/usr/bin/perl

use utf8;
use open IN => ':encoding(utf8)';

open(FF, "list.txt");
while(<FF>) {
        s/(?<=Порт )([0-9][0-9]?)/$1+40/ge;
        print;
}

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Замена по шаблону + мат.операция"  +/
Сообщение от LSTemp (ok) on 26-Июн-12, 00:54 
> Есть файл вида
> Коммутатор ABC - Порт 1 - Сеть SECURITY
> SOMETEXT
> Коммутатор ABC - Порт 2 - Сеть SECURITY
> SOMETEXT
> Нужно "Порт N" увеличить на 40
> Sed так не умеет, perl не ловит русские буквы. Подскажите решение задачи

и перл и сед может. для начала сойдет awk & shell

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Замена по шаблону + мат.операция"  +/
Сообщение от ciwl (ok) on 26-Июн-12, 01:08 
>> Есть файл вида
>> Коммутатор ABC - Порт 1 - Сеть SECURITY
>> SOMETEXT
>> Коммутатор ABC - Порт 2 - Сеть SECURITY
>> SOMETEXT
>> Нужно "Порт N" увеличить на 40
>> Sed так не умеет, perl не ловит русские буквы. Подскажите решение задачи
> и перл и сед может. для начала сойдет awk & shell

как, например, awk&shell и sed? С перлом-то худо-бедно разобрался (см. выше)

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Замена по шаблону + мат.операция"  +/
Сообщение от Andrey Mitrofanov on 26-Июн-12, 21:27 
> как, например, awk&shell и

$ echo "Коммутатор ABC - Порт 2 - Сеть SECURITY"|awk '$4=="Порт"{$5+=40}{print}'
Коммутатор ABC - Порт 42 - Сеть SECURITY
$ _

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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