Em primeiro lugar, este é um UUOC
( uso inútil de cat ). Não há um bom eason para usar cat
, sed
é perfeitamente capaz de ler arquivos em si, e mesmo se não fosse, então redirecionar a entrada padrão do arquivo seria equivalente a canalizá-lo.
esc=$(echo -e '\e')
sed "s,\(.*\) \(.*\) \(.*\) \(.*\),$esc[31m $esc[34m $esc[33m $esc[32m$esc[m," file4
Isto está assumindo os dois espaços entre os campos como você especificou originalmente, embora isso pareça ter ocorrido em uma edição; ajuste de acordo.
Não tenho ideia do motivo pelo qual você pensou que a sua maneira original (combinar todo o texto em uma linha, envolvê-lo entre dois códigos de escape (para amarelo) lhe daria várias cores.