Предполагая, что ваши числа всегда являются целыми положительными числами без единиц, унарных знаков плюс или других украшений.
Регулярные выражения не подходят для сравнения чисел, но если вы видите свои входные данные в виде двух:
-разделенных столбцов, с ними будет проще справитьсяawk
:
awk -F ':' '$2 >= 100 && $2 <= 199' <file
Это сравнит второе разделенное:
-поле в данных со 100 и 199 и напечатает полную строку, если число находится в заданном диапазоне.
Это также возможно с grep
,но не такой гибкий:
grep ':1[0-9][0-9]$' <file
Выражение [0-9]
соответствует одному символу между 0
и 9
. $
привязывает выражение к концу строки.
Если вы хотите сопоставить строки с номерами от 100 до 250, вы просто замените 199
в коде awk
на 250
, но с регулярным выражением вам придется придумать
grep -E ':(1[0-9][0-9]|2[0-4][0-9]|250)$' <file
Здесь три части скобок соответствуют числам от 100 до 199, затем от 200 до 249 и, наконец, 250. (Я говорю «числа», но регулярные выражения всегда работают с строками).
Да, ваша файловая система ext4 может игнорировать их без форматирования.
Но если у вас нет действительно очень старого жесткого диска, у вас, вероятно, будет жесткий диск, который автоматически повторно -распределяет поврежденные сектора в «запасные» сектора при следующей записи, и все это прозрачно для ОС.
Таким образом, правильный способ состоит в том, чтобы получить список плохих блоков, попытаться прочитать каждый из них несколько раз на всякий случай, а затем записать обратно (или обнулить его, если вы не можете его прочитать; в этом случае вы также можете идентифицировать файл и посмотреть, не сможете ли вы восстановить его откуда-то ). Вы можете сделать это, например. с dd
(, но дважды проверьте все, прежде чем нажимать return, легко делать глупости с dd
и напрямую записывать на жесткие диски или разделы ).
Пока вы это делаете, также проверьте данные SMART вашего жесткого диска с помощью smartctl
.
Вы можете запустить fsck.ext2
с опцией -c
,который запустит badblocks
, создайте невидимый файл с блоками, которые не удалось прочитать, а затем убедитесь, что никакие два файла не используют одни и те же блоки. Если какой-либо из этих блоков используется другим файлом, это проявляется как конфликт, и вам предоставляются различные варианты восстановления, такие как попытка дублировать блоки или удаление файла.
Такой ремонт нельзя выполнить во время автоматического(-a
)прогона, так как он включает разрушающую операцию. Если вы объедините -c
и -a
, проверка файловой системы может завершиться ошибкой, и я не уверен, правильно ли построен inode сбойных блоков в этом запуске (, так что вы должны быть в состоянии сделать интерактивное восстановление без повторного сканирования ).
Таким образом, эти блоки помечаются как выделенные и не используются.