如何在Linux中加入文件?

时间:2018-10-17 23:25:47

标签: linux

因此,我基本上有一个名为卖方和另一个命名产品的文件,我必须根据卖方代码将它们加入,然后按顺序输出产品的代码和名称以及卖方的名称,并将其附加到名为lab4.txt的文件中。该问题还要求“确保在文件供应商中为每个不可配对的行生成一行,并且使用文本” Not Available”替换不可配对的行的空白字段。我一直在尝试使用join命令来做到这一点,但是可以正确地做到这一点。这是文件的样子:

供应商:

1201:Cromwell Interiors
1221:Design Extras Inc.
1320:Piedmont Plastics Inc.
1340:Morgan Catering Service Ltd.
1350:Pullman Elevators
1360:Johnson Office Products

另一个称为产品的文件:

S0107:Lobby Furniture:1201
S0109:Ballroom Specialties:1221
S0110:Poolside Carts:1320
S0130:Formal Dining Specials:1340
S0201:Reservation Logs:1410

结果应为:

S0107:Lobby Furniture:Cromwell Interiors
S0109:Ballroom Specialties:Design Extras Inc.
S0110:Poolside Carts:Piedmont Plastics Inc.
S0130:Formal Dining Specials:Morgan Catering Service Ltd.
Not Available:Not Available:Pullman Elevators
Not Available:Not Available:Johnson Office Products

1 个答案:

答案 0 :(得分:1)

正确答案

好的。这是获得所需输出的方法。

md5('bad_path').catch((error: Error) => { assert.strictEqual(error.message.length > 0, true); });

  • join -a2 -o 1.1,1.2,2.2 -e "Not Available" -t':' -1 3 -2 1 products vendors打印文件2中不可配对的行
  • -a2的输出格式为FILE1FIELD1:FILE1FIELD2:FILE2FIELD2
  • -o 1.1,1.2,2.2用“不可用”替换缺少的输入字段。 要求还指定-o。
  • -e "Not Available"使用分号作为列定界符
  • -t':'基于文件1的列3和文件2的列进行连接。
  • -1 3 -2 1个文件要加入;文件1是产品,文件2是供应商<​​/ li>

命令输出:

products vendors


原始错误答案

考虑到您帖子中的两个文件,该文件适用于加入版本8.30(Arch Linux)。

[larntz@dido:/home/larntz/temp$ join -a2 -o 1.1,1.2,2.2 -e "Not Available" -t':' -1 3 -2 1 products vendors

S0107:Lobby Furniture:Cromwell Interiors
S0109:Ballroom Specialties:Design Extras Inc.
S0110:Poolside Carts:Piedmont Plastics Inc.
S0130:Formal Dining Specials:Morgan Catering Service Ltd.
Not Available:Not Available:Pullman Elevators
Not Available:Not Available:Johnson Office Products
  • join -a1 -a2 -e"Not Available" -t':' -1 1 -2 3 vendors products 告诉join从两个文件中打印所有行
  • -a1 -a2告诉join用Not Available替换空字段。不幸的是,由于某种原因,这是行不通的。 编辑 -e仅在还指定了-o(输出格式)的情况下有效。
  • -e"Not Available"告诉join使用分号作为字段分隔符
  • -t':'告诉join使用文件1(供应商)中的字段编号1与文件2匹配
  • -1 1告诉join使用文件2(产品)中的字段3与文件1匹配。
  • -2 3是要连接的两个文件,其顺序基于vendors products-1参数。

命令输出:

-2