Bash 使用shell脚本合并两个文件
我有两个文件,文件A和文件B。我想合并这两个文件,如下所示 归档Bash 使用shell脚本合并两个文件,bash,zsh,Bash,Zsh,我有两个文件,文件A和文件B。我想合并这两个文件,如下所示 归档 Data A a 123 b 35 ------- Data B ------- Data C a 234 d 23 文件B Data A a 12 c 1 ------- Data B ------- Data C d 24 输出应该是 Data A a 135 b 35 c 1 ------- Data B ------- Data C a 234 d 47 数据A,数据。。。数据A、数据…下的文件和变量
Data A
a 123
b 35
-------
Data B
-------
Data C
a 234
d 23
文件B
Data A
a 12
c 1
-------
Data B
-------
Data C
d 24
输出应该是
Data A
a 135
b 35
c 1
-------
Data B
-------
Data C
a 234
d 47
数据A,数据。。。数据A、数据…下的文件和变量的顺序相同。。。也将按字母顺序为两个文件排序,但某个变量可能存在于一个文件中,也可能不存在
我尝试将每个块的两个文件(分隔符为----)外部连接起来,然后添加两个数字,但我想不出任何方法 可能应该用一些真正的编程语言来完成,但您要求了一个bash,所以它是这样的:
#!/bin/bash
declare -A data
read_sect_from_fd() {
local fd=$1
while read -u $fd -r var val; do
[[ $var == ------- ]] && break
if [ "${data[$var]}" ]; then
data[$var]=$(( $val + ${data[$var]} ))
else
data[$var]=$val
fi
done <&3
}
print_sect() {
for i in "${!data[@]}"; do
echo "$i ${data[$i]}"
done
}
exec 3<"File A"
exec 4<"File B"
while IFS= read -u 3 -r heading ; do
read_sect_from_fd 3
IFS= read -u 4 -r heading
read_sect_from_fd 4
[ "$not_first" ] && echo "-------"
not_first=1
echo "$heading"
print_sect
data=()
done
#/bin/bash
声明-一个数据
从_fd()中读取_sect_{
本地fd=$1
读取时-u$fd-r var val;do
[$var==----]&&break
如果[“${data[$var]}”];则
数据[$var]=$($val+${data[$var]}))
其他的
数据[$var]=$val
fi
a 135
是如何进入输出文件的?@JohnBupit我猜这是两个输入文件中a
的总和。对的升级投票可能应该用一些真正的编程语言来完成