Bash
如何顯示在差異輸出中移動的位置行數?
頂部1
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
前2名
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
但我實際上需要這個:
+1, amazon.com -1 baidu.com -1 qq.com +1 wikipedia.org
我不知道最後一步怎麼做
(我還需要計算下降或上升的百分比)
添加
| paste -d, - -
給我這個
+9,amazon.com,-8,amazon.com +5,baidu.com,-6,baidu.com +8,qq.com,-9,qq.com +6,wikipedia.org,-5,wikipedia.org
您還可以考慮使用一種方法,
join
因為您最終想要對輸出進行排序。像:join -t, -j2 <(sort -t, -k2 file1) <(sort -t, -k2 file2) | awk -F, '{n=$3-$2; if (n) print n, $1}'
使用 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
輸出
-1 amazon.com 1 qq.com -1 wikipedia.org 1 baidu.com
訂單不保證。