【发布时间】:2015-06-23 20:26:16
【问题描述】:
有一个包含 200 行的输入文件,每行只有一个字段,它是一个数字。 例如
89970060122507635800
我需要创建一个输出文件,使其看起来像每个输入行,如下所示:
INSERT,89970060122507635800,425062250763580,,0000,29514215,0000,29514215,,,,NORMAL,425062260621583,Blank,sim,9877
地点:
- 除第二个和第三个字段外,所有字段都具有常量值(包括逗号内的空值)
- 第二个字段由输入文件填充,第三个字段是通过从第二个字段中删除最后一个数字并将开头的 899700601 替换为 42506 获得的(如示例中所示)。
我确信我可以找到方法来做到这一点(我会在得到答案之前尝试),但我更想知道您认为哪种方法更有效。 awk、sed、shell脚本同时使用?
【问题讨论】:
-
“请为我提供完整的解决方案以获得最佳选择。”这句话会让你的问题结束,所以我删除了它。实际上,如果您在提出问题之前 完成研究,那会更好。 “我确信我能找到方法来做到这一点……”
-
您可以使用任何 shell,
sed或awk来执行此操作。我建议awk在 shell 之前和 shell 在sed之前。 -
在选择要使用的工具时寻求建议很难从“太宽泛”中挽救。不乏可行的方法——包括没有外部工具的本机 shell(没有 sed、没有 awk、没有其他任何东西)——但这归结为见仁见智,除非你提供足够的细节来识别什么样的效率很重要。 (我们是在处理足够少的行,我们关心最小化启动时间,还是处理足够多的行,我们最关心最大化吞吐量?我们是否有可用的高性能 shell,例如 ksh93,或者我们需要处理用 bash?等)。