상위 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
답변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
주문은 보장되지 않습니다.
답변2
join
궁극적으로 출력을 정렬하기를 원하므로 메서드 사용을 고려할 수도 있습니다 . 좋다:
join -t, -j2 <(sort -t, -k2 file1) <(sort -t, -k2 file2) |
awk -F, '{n=$3-$2; if (n) print n, $1}'