如何在数字逗号分隔输入中插入列?

时间:2010-07-27 10:07:23

标签: unix

嗨我有

下面的文本文件

输入

326783,326784,402
326783,0326784,402
503534,503535,403
503534,0503535,403
429759,429758,404
429759,0429758,404
409626,409627,405
409626,0409627,405

369917,369916,402
369917,0369916,403

我想将其转换为下面的

条件:

1)输入文件第3列和第1列对于326784和0326784应该是相同的

2)如果它与上述输入文件的情况不同,那么它应该在最后一行打印

输出应该是

326783,326784,0326784,402
503534,503535,0503535,403
429759,429758,0429758,404
409626,409627,0409627,405
369917,369916,402
369917,0369916,403

我正在使用solaris平台

请帮帮我

1 个答案:

答案 0 :(得分:0)

我不理解你的计算逻辑,但是一些一般的建议:unix工具awk可以做这样的计算。它理解逗号分隔文件,你可以输出其他逗号分隔文件,由你的逻辑操作(你必须用awk语法表达)。

据我所知,这是unix的做法。 我这样做的方式(作为awk的非专家,只是提到它的完整性;)就是编写一个小的python脚本。 你想要

  • 打开输入和输出文件
  • 从输入文件中获取每一行
  • 解析整数
  • 执行你的逻辑
  • 将整数写入输出文件

未经检查的类似python的代码:

f_in = open("input", "r")
f_out = open("output", "w")
for line in f_in.readlines():
   ints = [int(x) for x in line.split(",")]
   f_out.write("%d, %d, %d\n" % (ints[0], ints[1], ints[0]+ints[1]))
f_in.close()
f_out.close()

这里,逻辑位于f_out.write(...)行中(此示例将输出第一个,第二个和两个输入整数的总和)

只需键入python并查看发生的情况,您就可以检查手头是否有Python解释器。如果有,请将代码保存到something.py中,然后使用“python something.py”

启动它