Você pode usar o seguinte código para substituir todos os espaços em uma linha, exceto o primeiro e o último por um caractere de espaço sem quebra, que o shell não considera como espaço em branco.
awk '{ x=$2; for(i=3;i<NF;i++){x=x " " $i }; print $1 " " x " " $NF }' temp
Para remover também as aspas (todas as aspas, infelizmente), use:
awk '{ gsub(/"/, ""); x=$2; for(i=3;i<NF;i++){x=x " " $i }; print $1 " " x " " $NF }' temp
Para verificar se funciona:
$ awk '…' temp | cut -d" " -f1
e9dfe65
3b780ba
7ba8120
$ awk '…' temp | cut -d" " -f2
Alice, 78 minutes ago - Thumbnails are now 300x300
Bob, 3 hours ago - new intro page
Charles, 20 hours ago - add cutoff date for widget timing
Super User quebra minha resposta. Esse caractere de espaço entre aspas em x=x " " $i
deve ser 0xC2A0
, ponto de código Unicode U+00A0
.