gpt4 book ai didi

linux - 对两个文件中一行的每个元素求和

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:28 25 4
gpt4 key购买 nike

我想编写 shell 脚本,其中添加 file1 和 file2 中每一行的列元素。

文件1:

A 10 12 13 14
B 2 5 6 10
C 1

文件2:

A 11 13 11 15
B 3 1 1 1
C 2

输出:

A 22 25 24 29
B 5 6 7 11
C 3

我试图写这个,但看起来很困惑。所以我想得到一些帮助来让它变得更好!

awk '{getline v < "file1"; split( v, a ); 
for (i = 2; i <= NF; i++)
{print a[1], a[i]+ $i}
}' file2 > temp

awk '{a[$1]=a[$1]" "$2}
END{for(i in a)print i,a[i]
}' temp > out

最佳答案

文件1

A 10 12 13 14
B 2 5 6 10
C 1

文件2

A 11 13 11 15
B 3 1 1 1
C 2

程序

cat file1 file2 | cut -d" " -f1 | sort -u | while read i
do
line1="`grep ^$i file1 | sed -e "s/ */ /g" | cut -d" " -f2-` "
line2="`grep ^$i file2 | sed -e "s/ */ /g" | cut -d" " -f2-` "
(
echo $i
while [ "${line1}${line2}" != "" ]
do
v1=0`echo "$line1" | cut -d" " -f1`
v2=0`echo "$line2" | cut -d" " -f1`
line1="`echo "$line1" | cut -d" " -f2-`"
line2="`echo "$line2" | cut -d" " -f2-`"
echo `expr $v1 + $v2`
done
) | xargs
done > file3

文件3

A 21 25 24 29
B 5 6 7 11
C 3

如果列数或行数不相同,则该解决方案仍然有效,缺失值被视为 0

#file1
A 10 12 13 14
B 2 5 6
C 1 10
D 1 1

#file2
A 11 13 11 15
B 3 1 1 1 5
C 2
F 3 3

#file3
A 21 25 24 29
B 5 6 7 1 5
C 3 10
D 1 1
F 3 3

关于linux - 对两个文件中一行的每个元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35956879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com