awk
не поддерживает PCRE (Perl-совместимое регулярное выражение), поэтому вы не можете использовать любые поисковые пути нулевой ширины, такие как отрицательный прогноз, который вы используете, (?! word +)
. Механизм Regex
awk
поддерживает только ERE (расширенное регулярное выражение). Вам нужно включить в него всю логику, иначе вы можете разбить логику в соответствии со своими потребностями. Также посмотрите на встроенные функции awk
, проверьте, могут ли они помочь в этом отношении.
Ключевое слово для поиска: reflink
. Недавно он был реализован в XFS.
РЕДАКТИРОВАТЬ :Реализация XFS изначально была помечена как ЭКСПЕРИМЕНТАЛЬНАЯ. Это предупреждение было удалено в версии ядра 4.16, через несколько месяцев после того, как я написал выше :-).
Если вы не введете системный вызов дляcp
(или, по крайней мере, для копирования блока ), ОС будет трудно определить, что данные, которые программа cp
собирается записать, совпадают с теми, которые она просто читать из другого блока. Кроме того, у вас будут дополнительные накладные расходы для управления сценарием «несколько файлов совместно используют одни и те же блоки». Большие похожие файлы, отличающиеся лишь несколькими блоками, встречаются редко. Так что в целом дешевле просто скопировать эти блоки, чем добавлять эти административные издержки ко всем всем файлам.
Теперь, если вы «скопируете» файлы (многие из них ), добавив еще один клон/снимок файловой системы, скажем, в BTRFS, ситуация изменится :Теперь вы «скопировали» все файлы в файловой системе,и любые изменения в них будут копироваться -на -и записываться. Это есть, но не в ext4.
«Журналирование» — это совершенно независимая от этого концепция, важны административные структуры для файлов.
When --reflink[=always] is specified, perform a lightweight copy, where the data blocks are copied only when modified. If this is not possible the copy fails, or if --reflink=auto is specified, fall back to a standard copy.
Это работает на файловых системах, которые поддерживают Копировать -в -Записать(ссылку ), в основном BTRFS на данный момент. Реализация рефлинков XFS находится в разработке[1] [2] .
В Linux есть системный вызов, который позволяет процессам пользовательского пространства сообщать ядру, что нужно делать копии при записи копий файлов. FICLONERANGE и FICLONE, используемые в качестве опций ioctl, позволяют копировать при записи копии файлов и диапазонов внутри файлов.
Используется cp --reflink для создания копий, если файловая система это поддерживает.