Linux + строка замены / WORD в файле согласно правилу

Включение sync на уровне файловой системы обычно не хорошее решение (обычно, не всегда). Когда sync включен, это не только вызывает буферный сброс на каждой записи, это также инвертирует способность файловой системы переупорядочить записи для оптимизации IO (путем записи больших блоков). Это также приводит к более высокой фрагментации.

Лучшее решение состоит в том, чтобы получить любое приложение, которое Вы используете для использования fsync (или fdatasync) вместо этого. Когда приложение выписывает данные, оно может позвонить fsync который вытеснит те данные к диску. Таким образом, это - только определенные данные, которые синхронизируются все время, а не целая файловая система. Это также немного более интеллектуально как fsync может быть назван, после того как приложение записало все свои данные, а не на каждом немного.

При использовании системного-журнала-ng он имеет способность включить fsync на на место назначения файла (документация). rsyslog мог бы также иметь эту функцию, но я не знаю.

1
11.12.2012, 17:21
1 ответ

Необходимо использовать отрицательный look-behind/-ahead:

export OLD_TEXT='$$OLD_WORD$$'
export NEW_TEXT='&&NEW_WORD&&'

perl -pe 's/(?<![[:alnum:]])\Q$ENV{OLD_TEXT}\E(?![[:alnum:]])/$ENV{NEW_TEXT}/g' file

дает

ABC$$OLD_WORD$$ABC
&&NEW_WORD&&
&&NEW_WORD&&
1$$OLD_WORD$$
0
28.01.2020, 02:09

Теги

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