在Shell或Perl文件末尾添加新位置

时间:2018-02-11 17:45:38

标签: shell perl

我的问题是如何在Shell或Perl中的文件末尾添加新位置?

我有两个文件: 文件A有536382行,键是第三列:

abc1111,1070X00Y0,**9999**,B
abc2222,1070X00Y0,**9999**,B
abc3333,1070x00Y0,**9999**,B

文件B有946行,键是第一列:

**9999**,Position,West
**9998**,Position,West
**9997**,Position,South
**1111**,Position,South
**9999**,Time,Morning
**9997**,Time,Afternoon

我想要这两个文件的组合:

abc1111,1070X00Y0,9999,B,West,Morning
abc2222,1070X00Y0,9999,B,West,Morning
abc3333,1070x00Y0,9999,B,West,Morning

我正在尝试shell脚本但是我收到了内存不足的消息。 所以我愿意接受建议。

谢谢你,到目前为止。

2 个答案:

答案 0 :(得分:0)

  1. 将小文件转换为perl的散列
  2. 逐行处理大文件

答案 1 :(得分:0)

通过对代码进行一些更改,我能够获得您想要的结果。

abc1111,1070X00Y0,**9999**,B,West,Morning
abc2222,1070X00Y0,**9999**,B,West,Morning
abc3333,1070x00Y0,**9999**,B,West,Morning

这产生了以下输出:

$hash{$col2[0]}{$col2[1]} = $col2[2];

代码的更改是

  1. Position创建一个Hash of Hash来保存Time@{ $hash{$key} }{ qw/Position Time/ })个键。它们在这里的哈希切片中使用

  2. {{1}}