我有一个标签分隔文件,如下所示
John 1,0 3,2 5,6
Mike 3,2 4,5 0,0
James 3,0 5,3 4,5
我想添加3个字段的所有第一个元素,并添加3个字段的第二个元素输出以下
John 9,8
Mike 9,7
James 12,8
在awk中是否存在可以使用多个字段分隔符的解决方案?
答案 0 :(得分:5)
您可以在awk
中使用多个分隔符:
awk -F '[\t,]+' -v OFS='\t' '{print $1, ($2+$4+$6) "," ($3+$5+$7)}' file
John 9,8
Mike 7,7
James 12,8
答案 1 :(得分:1)
我不了解awk
,但这是bash
的一个(无聊的)解决方案:
while read -r name f1 f2 f3; do
s1=$((${f1%,*}+${f2%,*}+${f3%,*}))
s2=$((${f1#*,}+${f2#*,}+${f3#*,}))
echo "$name $s1,$s2"
done < input.txt
答案 2 :(得分:1)
$ awk -F'[\t,]' '{delete s; for (i=2;i<=NF;i++) s[i%2]+=$i; print $1 "\t" s[0] "," s[1]}' file
John 9,8
Mike 7,7
James 12,8