Hazel bash脚本或Applescript来汇总txt文件中的数字

时间:2013-08-08 13:23:53

标签: bash sed awk applescript

提前感谢您提出的任何建议。

我一直在尝试将一个脚本写入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可以这样吗?

再次感谢,

罗伯特

2 个答案:

答案 0 :(得分:3)

这个awk单行应该这样做:

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

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

Total: 98

最后。

答案 1 :(得分: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(字段数)是最后一个字段的值。