0

提前感谢您分享的任何建议。

我一直在尝试将脚本写入 Hazel 以对文本文件中的数字求和。我没有太多经验,并且在 bash 和 Applescript 中尝试了很多不同的解决方案,但没有任何结果。

这是一个示例文本文件,我想从中添加以“:$”开头的数字

**15.44.04**

Art materials
: $9

Transport
: $4.50

**15.44.21**

Art materials
: $18

Art materials
: $25

Food
: $11.50

**20.03.53**

Miscellaneous
: $20

**20.04.02**

Food
: $10

我想将文本“**Total:”与值的总和附加到文件的末尾。

使用 bash 或 Applescript 可以实现这样的事情吗?

再次感谢,

罗伯特

4

2 回答 2

3

这个 awk 单线应该做:

 awk -F'$' '{x+=$2+0}7;END{print "Total: "x}' file

它打印整个文件,并添加一行

Total: 98

在最后。

于 2013-08-08T13:27:44.670 回答
0

要使用 Hazel 运行脚本,您可以将 shell 保留为/bin/sh并使用$1来引用正在处理的文件:

awk -F\$ '{x+=$NF}END{print "\n**Total: $"x}' "$1" >> "$1"

**Total上面的脚本仅适用于末尾没有一行的文件。这将替换现有的**Total行:

t=$(sed '/^\*\*Total: /d' "$1")
awk -F\$ '{s+=$NF}1;END{print "\n**Total: $"s}' <<< "$t" > "$1"

sed /pattern/d删除行。如果 sed 命令后的文本以两个换行符结尾,则$()删除这两个换行符。awk -F\$设置字段分隔符,如BEGIN{FS="$"}. $NF(字段数)是最后一个字段的值。

于 2013-08-09T10:00:06.880 回答