замените шаблон, найденный числом плюс 1 на той же строке

[115763] Он работает путем выдачи определенных [116125] ANSI-эвакуационных последовательностей [116126]. В частности, эти два:

Esc[линия;колонкаH Позиция курсора:[116301] Esc[Line;Columnf Перемещает курсор на указанную позицию (координаты). Если нет [116302]                                          укажите позицию, курсор переместится в исходную позицию в левом верхнем углу [116303].                                          угол экрана (строка 0, колонка 0).

SD card with built-in USB interface

Esc[2J Стереть дисплей: [116304]                                          Очищает экран и перемещает курсор в исходную позицию [116305] (строка 0, столбец 0).

Hacked SD card, exposing USB interface

Возможно, это легче понять на выходе [116131]od -c[116132]:

033[116134] это [116135]Esc[116136], поэтому на выходе выше просто [116137]Esc[H[116138], а затем [116139]Esc[2J[116140].[115770].

2
22.10.2016, 09:08
1 ответ

Тестовые данные:

$ cat data
case1: my test is (HELLO) with some numbers (A1, A2, A3, A4)
case2: my test is (HELLO) with some numbers (A1[10:3], A2, A3, A4)
case3: replaceit(something(HELLO)) sometext (single_bit_here, somedatahere[4], something, something,something,something) ;

Сценарий Perl:

#!/usr/bin/perl
use strict;
use warnings;

while (<>) {
    my $n = 1;
    $n = 1 + $1 - $2 if (/\([^\,)]*\[(\d+)(?::(\d+))?[^\)]*\)[^\)]*$/);
    s/HELLO/$n/;
    print;
}

Вывод:

$ ./the-script.pl < data
case1: my test is (1) with some numbers (A1, A2, A3, A4)
case2: my test is (8) with some numbers (A1[10:3], A2, A3, A4)
case3: replaceit(something(1)) sometext (single_bit_here, somedatahere[4], something, something,something,something) ;
2
27.01.2020, 22:13

Теги

Похожие вопросы