Sim, você pode fazer isso no bash, mas não tenho ideia do porquê você gostaria. Aqui está uma solução pura:
$ while read -r mon day time host threat date time crit count sugg out exip \
in inip tcp port export cat vuln; do
printf "%s | " "$mon $day $time" "$host" "$threat" "$date $time" \
"$crit $count $sugg" "$out $exip" "$in $inip" "$tcp \
$port" "$export" "$cat" "$vuln"
done < file; printf "\n"
Jan 21 11:10:44 | hostname.internal.nl | THREAT | 2015/01/21 11:10:44 | critical 5 reset-both | outside 10.10.10.10 | inside 10.16.61.4 | tcp 39898 | 80 | web-browsing | any Bash Remote Code Execution Vulnerability(36731) |
Eu poderia te dar melhores maneiras em perl ou awk, mas elas dependerão de como exatamente você define seus campos. Se você atualizar sua pergunta com mais detalhes (por exemplo, sempre haverá três palavras no campo crítico? Precisamos saber o que sempre será o mesmo em sua entrada e o que pode mudar), eu posso lhe dar uma solução melhor.