Para tornar meu script um pouco mais legível, estou tentando dividir meu padrão de grep longo. Isso é possível?
Exemplo, por script bash, em vez desta longa linha
smartctl -a /dev/sda | grep -Ei "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" | awk '{print $2" "$10}')
Eu quero dividir em algo assim, para tornar as coisas mais legíveis
smartctl -a /dev/sda | grep -Ei "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" | awk '{print $2" "$10}')
A sequência "barra invertida-nova linha-espaço em branco" é substituída por um único espaço, então você está adicionando espaços ao padrão.
O uso de matrizes bash pode levar a um código legível, algo assim:
Podemos remover o grep do pipeline porque o GNU awk pode fazer o que o grep faz, mas talvez um pouco mais extenso :