¿Cómo puedo mostrar el número de posiciones que las líneas han movido en la salida de diff?

top1

1,facebook.com 2,google.com 3,youtube.com 4,yahoo.com 5,wikipedia.org 6,baidu.com 7,live.com 8,amazon.com 9,qq.com 10,twitter.com 

top2

 1,facebook.com 2,google.com 3,youtube.com 4,yahoo.com 5,baidu.com 6,wikipedia.org 7,live.com 8,qq.com 9,amazon.com 10,twitter.com diff -u /Users/stofke/Desktop/top2a.csv /Users/stofke/Desktop/top1a.csv | sed -n '1,2d;/^[-+]/p' | sort --field-separator=',' --key=2 +9,amazon.com -8,amazon.com +5,baidu.com -6,baidu.com +8,qq.com -9,qq.com +6,wikipedia.org -5,wikipedia.org 

Pero realmente necesito esto:

  +1, amazon.com -1 baidu.com -1 qq.com +1 wikipedia.org 

No sé cómo hacer ese último paso

(También necesitaría calcular el% de disminución sabio o upload)

Agregar | paste -d, - - | paste -d, - -

me da esto

 +9,amazon.com,-8,amazon.com +5,baidu.com,-6,baidu.com +8,qq.com,-9,qq.com +6,wikipedia.org,-5,wikipedia.org 

También podría considerar un enfoque que use join ya que desea orderar el resultado al final. Me gusta:

 join -t, -j2 <(sort -t, -k2 file1) <(sort -t, -k2 file2) | awk -F, '{n=$3-$2; if (n) print n, $1}' 

Usando awk

 awk -F, ' NR == FNR {n[$2] = $1; next} {n[$2] -= $1} END {for (k in n) if (n[k] != 0) printf " %2d %s\n",n[k],k} ' top1 top2 

salidas

  -1 amazon.com 1 qq.com -1 wikipedia.org 1 baidu.com 

order no garantizada