脚本,UNIX,比较

我有两个档案

文件1:

002009092312291100098420090922111 010555101070002956200453T+00001190.81+00001295.920010.87P 010555101070002956200449J+00003128.85+00003693.90+00003128 010555101070002956200176H+00000281.14+00000300.32+00000281 

文件2:

 002009092410521000098420090709111 010560458520002547500432M+00001822.88+00001592.96+00001822 010560458520002547500432D+00000106.68+00000114.77+00000106 

在从01开始的每个logging中的两个文件….从第三个字符到第25个字符的string..到字母表是关键…基于这个关键..我必须比较两个文件…..和如果在文件2中有任何logging匹配…那么我必须replacefile1中的logging…否则附加它,如果它不匹配….

请尽快帮忙

那么,这是一个相当不确定(和基本)的编程问题。 如果你确切地解释你做了什么以及你卡在哪里,我们将能够更好地帮助我们。

此外,它看起来有点像家庭作业,人们担心在作业问题上给予太多的帮助,因为它可能看起来像作弊。

为了让你开始:

  • 我建议Perl解决这个问题,但awk或其他脚本语言也可以。 我建议反对sh / bash,因为它们在文本操作方面很薄弱; grep等人也会变得相当麻烦。
  • 首先编写一个Perl程序,过滤从01开始的记录。然后提取密钥并将其放入哈希(Perl结构)。 然后根据需要输出一个新的组合文件。

如果您仍然遇到问题,请随时编辑您的问题。

使用awk获取从3-25的字段,但做awk -F "" '/^01/{print $1}' file_name | cut -c 3-25 awk -F "" '/^01/{print $1}' file_name | cut -c 3-25 ,从两个文件中匹配前两个字段01,并获得两个不同缓冲区中的所有行,并比较两个缓冲区for line in ina shell脚本中使用的行。当第二个缓冲区中的行匹配第一个grep第二个缓冲区中的行在ist文件中,并用第二行中的行替换ist文件中的行。这似乎是一个家庭work.and你需要工作一点点的逻辑。