Заменить текст между определенным шаблоном в UNIX

Обрезка файловой системы состоит из двух шагов:

  1. Определить, какие части диска не использует файловая система, т. е. определить, какие блоки свободны. Предпочтительно на этом этапе перемещать свободные блоки, чтобы получить как можно больше последовательных свободных блоков. (Это желательно, поскольку блоки флэш-стирания обычно больше, чем блок файловой системы.)
  2. Отправьте команду стирания на флэш-накопитель для всех блоков стирания флэш-памяти, которые не содержат полезных данных.

Шаг 2 можно выполнить в любой операционной системе, которая может взаимодействовать с флэш-накопителем. Но шаг 1 требует знания файловой системы. Заставить fstrimработать — единственное решение, и более вероятно, что кто-то заставит его работать для BeFS на Haiku, чем на какой-либо другой ОС.

2
02.10.2019, 14:37
3 ответа

Попробуйте:

sed -E 's/:([0-9]+[AP]M$)/.\1/'

Я не пытался выяснить, что не так с вашим регулярным выражением, но лично я бы не стал сопоставлять начало строки, если вам это не нужно. Также должно быть быстрее просто соответствовать концу строки.

2
27.01.2020, 22:16

Я попробовал команду sed ниже, и она решила мою задачу

sed -e 's/ ([A -Z][a -z]{2}[ ]{1,2}[0 -9]{1,2} [ ]{1,2}[0 -9]{4}[ ]{1,2}[0 -9]{1,2} :[0 -9]{2} :[0 -9] {2} ):([0 -9] {3}[A,P]M )/\1.\2/g'

-1
27.01.2020, 22:16

В конце концов, вы хотите заменить третье двоеточие точкой:

sed 's/:/./3' input.txt
0
27.01.2020, 22:16

Теги

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