Поведение файловой системы, когда монтируют опцию, было указано как error=panic

GNU sed путь

В GNU sed (при использовании некоторого дистрибутива Linux, это должно быть значение по умолчанию sed реализация), можно использовать что-то вроде этого:

sed '/.production =/,+12d' inputfile.txt

Как это работает:

  1. Это сканирует входной файл линию за линией (это - то, как sed работает), и проверка, если команда должна использоваться.
  2. Наша команда d (последний знак), что означает, удаляют строку.
  3. Но эта команда будет только работать, если текущая строка действительно будет соответствовать нашему диапазону.
  4. Диапазон указан двумя аргументами (запустите и конец диапазона, включительно), разграниченный , символ. Сначала регулярное выражение /.production =/ которые соответствуют каждой строке, содержащей это выражение. Второй аргумент +12d что означает 12 lines from start range.
  5. Таким образом, наш диапазон соответствует каждой строке, которая соответствует выражению и следующим 12 строкам и удаляет их.
  6. Все другие строки печатаются к выводу (значение по умолчанию sed behaviour).

Портативный, ужасный путь

Этот должен продолжить работать другой sed реализация, но включает намного больше ввода и не таким образом устойчива:

sed '/.production =/{N;N;N;N;N;N;N;N;N;N;N;N;d}' somefile.txt

Как это работает:

  1. Это сканирует входной файл линию за линией (это - то, как sed работает), и проверка, если команда должна использоваться.
  2. Это проверяет, соответствует ли строка /.production =/ шаблон. Если так, это выполняет все команды в {} фигурные скобки.
  3. Мы работаем N времена команды 12. N управляйте читает следующую строку и добавляет его к текущему буферу. Таким образом после того, как мы выполняем его 12 раз, у нас есть 13 строк, связанных в текущем буфере (первая строка + 12 считанных N команды).
  4. Теперь мы работаем d команда, которая удаляет это, связала 13 строк.
  5. sed продолжается, пока это не находит другой шаблон и снова удаляет 13 строк. Все другие строки печатаются (значение по умолчанию sed поведение).
2
03.01.2014, 15:46
1 ответ

Это поведение может частично быть в зависимости от реализации в файловой системе. С тех пор в Вашем случае Вы, кажется, используете Ext3, я говорю о Ext3 здесь:

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

Значение это указано в супер блоке, используется в качестве значения по умолчанию при явном определении другого значения в параметре монтирования, это переопределяет значение от супер блока.

ядро документация Ext3

2
27.01.2020, 22:14

Теги

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