[英]How can I use multiple field separators or multiple awk to process columns
我有一个制表符分隔的文件,如下所示
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 中是否有可以使用多个字段分隔符的解决方案?
您可以在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
我不知道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
$ 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.