因此,我基本上有一个名为卖方和另一个命名产品的文件,我必须根据卖方代码将它们加入,然后按顺序输出产品的代码和名称以及卖方的名称,并将其附加到名为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
答案 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