Você não precisa ler o arquivo linha por linha usando o bash. O Awk já faz isso. Por exemplo, você pode imprimir entradas quebradas usando este código
awk '$2!="OK"{print $0}' check.log
Você também pode imprimir o nome da tabela e usar esse comando para criar uma matriz e, em seguida, agir sobre eles:
array=( $(awk '$2!="OK"{printf "%s ",$1 }' check.log) )
Observe o espaço ao lado de %s
, isso é importante.
Você mencionou também que o erro pode ser multilinha, assim como para table8. Nós provavelmente queremos evitar mexer com isso. Portanto, podemos adicionar uma verificação também para o campo 1 conter uma tabela de palavras.
$> array=( $(awk '$1~/table/ && $2!="OK"{printf "%s ",$1 }' check.log) )
$> echo ${array[@]}
table2 table5 table7 table8
$> echo ${array[0]}
table2