Динамическое создание элемента меню для образов ISO в grub.cfg

Если мы можем предположить, что всегда нужно добавить 2 строки (никогда не 3, 1 или что-то еще) и что числа всегда находятся во втором столбце, разделенные пробелом, то есть простое решение:

cut -f2 -d' ' input.txt | perl -Mbigint -nle 'print $_ + <>' > output.txt

Команда cut просто выбирает второй столбец данных и отбрасывает первый. Команда perl перебирает входящие строки (с помощью переключателя -n ) и выводит сумму текущей и следующей строк (так что она работает в группах по два). Обратите внимание на использование модуля bigint для обработки длинных строк как очень больших чисел. Наконец, вывод перенаправляется в output.txt .

Если вам нужны пронумерованные строки в выводе, вы можете подумать о добавлении cat -n в качестве последнего шага в конвейере или добавить его прямо в код Perl:

cut -f2 -d' ' input.txt | perl -Mbigint -nle 'print ++$x . " " . ($_ + <>)' > output.txt

Или, если можете Не предполагайте, что входные данные отформатированы с пробелами, как в вашем примере, вы также можете перенести эту обработку в Perl:

perl -Mbigint -nle 's/.* //; $x=<>; $x =~ s/.* //; print $_ + $x' input.txt > output.txt
1
05.01.2018, 20:38
0 ответов

Теги

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