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

Unix 如何在数字逗号分隔输入中插入列?,unix,Unix,嗨,我有下面的文本文件 输入 我想像下面那样转换它 条件: 1) 对于326784和0326784,输入文件第3列和第1列应该相同,以此类推 2) 如果与上述输入文件last case不同,则应在最后一行打印 输出应该是 326783,326784,0326784,402 503534,503535,0503535,403 429759,429758,0429758,404 409626,409627,0409627,405 369917,369916,402 369917,0369916,40

嗨,我有下面的文本文件

输入

我想像下面那样转换它

条件:

1) 对于326784和0326784,输入文件第3列和第1列应该相同,以此类推

2) 如果与上述输入文件last case不同,则应在最后一行打印

输出应该是

326783,326784,0326784,402
503534,503535,0503535,403
429759,429758,0429758,404
409626,409627,0409627,405
369917,369916,402
369917,0369916,403
我正在使用solaris平台


请帮助我

我不理解您的计算逻辑,但有一些一般性建议: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”开头。

您尝试过什么语言。请把你迄今为止写的代码贴出来。同一个用户,类似的问题,相同的标题:嗯,看起来它们是不同的问题,对不起,有这样的标题“unix编程”,你怎么知道呢。建议:使用一个反映问题的标题(好的,只是为您更改了标题,也许这会有所帮助)。在这里再看一下您的示例,似乎需要一些跨行逻辑。不管怎样,这可能使python成为更可行的选择(但再次强调,不能对awk说太多,但认为它设计为基于行或做简单的事情,比如求和)
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()