我有如下数据流:
A,1
A,3
B,4
B,2
C,1
D,5..。诸若此类。在添加第2列中的值后,我希望根据第1列合并行。
A,4
B,6
C,1
D,5它看起来像一个典型的MapReduce作业,但是我想知道是否有任何命令/ bash工具来完成这个任务,可能是在一两行。我正在处理的文件大小几乎不是3-4 KB。
发布于 2016-04-12 14:19:48
发布于 2016-04-12 14:18:39
awk去营救!
有许多变化,但这需要排序输入,并保持键的顺序。
awk -F, -v OFS=, '$1==p{a+=$2} $1!=p{if(p) print p,a; p=$1; a=$2} END{print p,a}' file
A,4
B,6
C,1
D,5发布于 2016-04-12 22:28:49
cat file | sed -e "s/\(.*\),\(.*\)/\1=\`expr $\1 + \2\`/g"
#A=`expr $A + 1`
#A=`expr $A + 3`
#B=`expr $B + 4`
#B=`expr $B + 2`
#C=`expr $C + 1`
#D=`expr $D + 5`
cat file | cut -d',' -f1 | uniq | sed 's/\(.\)/echo \1,$\1/g'
#echo A,$A
#echo B,$B
#echo C,$C
#echo D,$D
( cat file | sed -e "s/\(.*\),\(.*\)/\1=\`expr $\1 + \2\`/g" ; cat file | cut -d',' -f1 | uniq | sed 's/\(.\)/echo \1,$\1/g') | sh -s
#A,4
#B,6
#C,1
#D,5https://stackoverflow.com/questions/36573861
复制相似问题