按类别增加数量的bash脚本



我需要bash脚本的帮助

输入线和输出线的形式为"类别"数量"

示例文件:

Mustard 6
Apple 4
Mustard 2

输出应为:

Mustard 8
Apple 4

订单没关系,可能是:

Apple 4
Mustard 8

文件/输入将以正确的格式,第二个字段为一个数字(可能为负)

仅使用sh shell脚本,没有尴尬,python,perl等。

我需要用cat" $@" | ...

启动代码

到目前为止我拥有的东西:

cat "$@" | while read line
do

如果第一行上的第一个字=第二行上的第一个单词,请添加$ 2并删除该行,请重复所有行

done

我不确定在循环之间如何实现,我正在考虑一个关联数组,我几乎可以肯定这就是我所需要的。

任何帮助将不胜感激!

如果我们可以使用bash,但不能使用awk

#!/bin/bash
declare -A c
cat "$@" | { while read item amount
do
    ((c[$item]+=$amount))
done
for i in "${!c[@]}"
do
    echo "$i ${c[$i]}"
done
}

这会产生:

Mustard 8
Apple 4

如果我们没有那么限制,我们可以使用awk,这使事情变得更容易:

awk '{ c[$1]+=$2 } END { for (i in c) { print i,c[i] } }' groceries

或,如果我们想从cat "$@"开始,则:

cat "$@" | awk '{ c[$1]+=$2 } END { for (i in c) { print i,"=",c[i] } }'

相关内容

  • 没有找到相关文章

最新更新