Разбить длинный шаблон grep на несколько строк

Вам следует заменить жесткий диск, если вам дороги ваши данные.

SMART в потребительском оборудовании обычно не очень полезен, а прошивка чаще всего сообщает, что все в порядке; обычно в оборудовании для бизнеса/сервера это более информативно.

Плохие сектора также обычно маскируются внутри жесткого диска до определенной степени. К тому времени, когда они начнут появляться/быть видимыми снаружи, пора сбросить носитель/жесткий диск и заменить его новым.

См. Google говорит, что диагностика не выявляет многие сбои дисков ПК

1
28.06.2019, 14:23
1 ответ

Последовательность «обратная косая черта -новая строка -пробел» заменяется одним пробелом, поэтому вы добавляете пробелы в шаблон.

Использование массивов bash может привести к читабельному коду, подобному этому:

words=(
    "Spin_Retry_Count"
    "Calibration_Retry_Count"
    "Reallocated_Event_Count"
    "Offline_Uncorrectable"
    "Reallocated_Sector_Ct"
    "Current_Pending_Sector"
    "CRC_Error_Count"
    "Multi_Zone_Error_Rate"
    "Temperature"
    "CRC_Error_Count"
    "Runtime_Bad_Block"
    "Erase_Fail_Count"
    "Program_Fail_C"
    "End-to-End_Error"
)
# join the words with pipes
pattern=$( IFS='|'; echo "${words[*]}" )

smartctl -a /dev/sda | grep -Ei "$pattern" | awk '{print $2, $10}'

Мы можем удалить grep из конвейера, потому что GNU awk может делать то же, что и grep, но, возможно, немного более многословно:

smartctl -a /dev/sda | gawk -v p="$pattern" -v IGNORECASE=1 '$0 ~ p {print $2, $10}'
3
27.01.2020, 23:30

Теги

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