Эти блоки сохраняются для будущего изменения размера, пока файловая система не достигнет 1024-кратного исходного отформатированного размера или файловая система не достигнет 16 ТБ (, после чего используется другой метод изменения размера ).
Если вы удалите функцию resize_inode
, блоки будут освобождены, вы сможете использовать их для данных, и ваша файловая система больше не может быть изменена в онлайн-режиме или «легко» в автономном режиме (вам нужно будет перемещать любые файлы, использующие эти блоки в сторону ).
Поскольку они занимают 4 МБ пространства, возможно, не стоит удалять эту функцию, если только вы точно не знаете, что вам никогда не потребуется изменять размер файловой системы.
Использование 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
.
Предполагается, что числа состоят только из цифр и точек.
Затем данные распечатываются.