Unix 如何在数字逗号分隔输入中插入列?
嗨,我有下面的文本文件 输入 我想像下面那样转换它 条件: 1) 对于326784和0326784,输入文件第3列和第1列应该相同,以此类推 2) 如果与上述输入文件last case不同,则应在最后一行打印 输出应该是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
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脚本。 你想
- 打开输入和输出文件
- 从输入文件中获取每一行
- 解析整数
- 执行你的逻辑
- 将整数写入输出文件
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()