【发布时间】:2017-11-11 06:56:23
【问题描述】:
输入文件由多行组成,如
0 1 0 0 0 1 1 0 0 0 / 1 0 / 1 0 / 1
0 1 0 1 0 0 0 0 -1 3 / 4 1 / 4 1 / 2
我想复制输入中的每一行,在原始行下方插入 3 个副本,并修改最后的分数。我希望输出是
0 1 0 0 0 1 1 0 0 0 / 1 0 / 1 0 / 1
0 1 0 0 0 1 1 0 0 0 / 1 1 / 2 1 / 2
0 1 0 0 0 1 1 0 0 1 / 2 0 / 1 1 / 2
0 1 0 0 0 1 1 0 0 1 / 2 1 / 2 0 / 1
0 1 0 1 0 0 0 0 -1 3 / 4 1 / 4 1 / 2
0 1 0 1 0 0 0 0 -1 3 / 4 3 / 4 0 / 1
0 1 0 1 0 0 0 0 -1 1 / 4 1 / 4 0 / 1
0 1 0 1 0 0 0 0 -1 1 / 4 3 / 4 1 / 2
对分数的修改遵循模式
(0,0,0) <- original fractions
(0,+1/2,+1/2)
(+1/2,0,+1/2)
(+1/2,+1/2,0)
但是,如果分数大于 1
i.e. 3/4 + 1/2 = 5/4
它必须减去 1
so 5/4 -> 1/4
想将此解决方案添加到我拥有的当前 bash 脚本中。我作为“输入”显示的是我的脚本迄今为止的结果。也许是一个 awk 或 sed 命令来达到预期的结果?
【问题讨论】:
-
当您进行中等复杂的算术运算(添加分数和模 1)时,我会考虑为此编写小型 perl 或 python 脚本。虽然它在 bash 和 awk 中是可行的(我不确定 sed - 可能?),但可读性会受到很大影响。
-
应该提到我是脚本新手,因此我不熟悉 perl 和 python
-
那么您会要求我们在每一步都做您的工作(或家庭作业)吗?这遵循之前的问题,在这些问题中您要求对此问题进行输入。努力吧,如果您遇到困难,我们会提供帮助,但不要写完整的东西!过去的帖子:stackoverflow.com/questions/47192415/… 然后stackoverflow.com/questions/47215364/… 然后stackoverflow.com/questions/47214248/…...
-
仅供参考,既然您在个人资料中说“我希望加入其中一个计算研究小组”,您可能想学习 python。 Python 有很多数学、统计、绘图工具……模块。到目前为止,Bash 对数学来说并不是很好! Bash 更适合系统管理员,而不是复杂的逻辑。
-
我发布了一个解决方案,但应该说这是一种糟糕的格式,它既不是机器也不是人类友好的!