Регулярное выражение Ultraedit для анализа комплексных чисел

Эти блоки сохраняются для будущего изменения размера, пока файловая система не достигнет 1024-кратного исходного отформатированного размера или файловая система не достигнет 16 ТБ (, после чего используется другой метод изменения размера ).

Если вы удалите функцию resize_inode, блоки будут освобождены, вы сможете использовать их для данных, и ваша файловая система больше не может быть изменена в онлайн-режиме или «легко» в автономном режиме (вам нужно будет перемещать любые файлы, использующие эти блоки в сторону ).

Поскольку они занимают 4 МБ пространства, возможно, не стоит удалять эту функцию, если только вы точно не знаете, что вам никогда не потребуется изменять размер файловой системы.

0
28.01.2020, 15:02
1 ответ

Использование awkв командной строке:

$ awk 'BEGIN { print "const Ipp32fc complexes[] = {" } END { print "};" } { re=im=$0; sub("[+-][0-9.]*i$", "", re); sub("^-?[0-9.]*", "", im); sub("i$", "", im); printf "\t{ %s, %s },\n", re, im }' file
const Ipp32fc complexes[] = {
        { -0.0272780, +88932190 },
        { 0.2833029, -10293882 },
        { 0.1990238, +22901020 },
        { 0.3009823, -22389991 },
};

Команда awkс небольшим количеством пробелов:

awk '
    BEGIN { print "const Ipp32fc complexes[] = {" }
    END   { print "};" }
    {
        re = im = $0
        sub("[+-][0-9.]*i$", "", re)
        sub("^-?[0-9.]*", "", im)
        sub("i$", "", im)
        printf "\t{ %s, %s },\n", re, im
    }' file

Это распечатывает необходимый текст заголовка и нижнего колонтитула на языке C в блоках BEGINи END, в то время как входные данные анализируются в более длинном блоке.

Ввод каждой строки назначается обеим переменным reи im. Переменная reполучает все после отсечения мнимой части, а переменная imполучает действительную часть и удаляет i.

Предполагается, что числа состоят только из цифр и точек.

Затем данные распечатываются.

2
28.04.2021, 23:25

Теги

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