gpt4 book ai didi

linux - linux下如何加入文件?

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:33 25 4
gpt4 key购买 nike

所以我基本上有一个名为供应商的文件和另一个名为产品的文件,我必须根据供应商代码加入它们,按顺序输出产品的代码和名称以及供应商的名称,并将其附加到名为 lab4.txt 的文件中。该问题还说“确保为文件供应商中的每个不可配对行生成一行,并使用文本“不可用”来替换不可配对行的空字段”。我一直在尝试使用 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

最佳答案

更正答案

好的。以下是如何获得所需的输出。

join -a2 -o 1.1,1.2,2.2 -e "不可用"-t':' -1 3 -2 1 产品供应商

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

命令输出:

[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
<小时/><小时/>

原始错误答案

鉴于您帖子中的两个文件,这适用于加入版本 8.30 (Arch Linux)。

join -a1 -a2 -e"Not Available" -t':' -1 1 -2 3 vendors products
  • -a1 -a2 告诉 join 打印两个文件中的所有行
  • -e"Not available" 告诉 join 将空字段替换为 Not available。不幸的是,由于某种原因这不起作用。 编辑 -e 仅在还指定了 -o(输出格式)时才有效。
  • -t':' 告诉 join 使用分号作为字段分隔符
  • -1 1 告诉 join 使用文件 1(供应商)中的字段编号 1 来与文件 2 匹配
  • -2 3 告诉 join 使用文件 2(产品)中的字段编号 3 来与文件 1 匹配
  • vendors products 是要加入的两个文件,订单事宜基于 -1-2 参数。
<小时/>

命令输出:

[larntz@dido:/home/larntz/temp$ join -a1 -a2 -e"Not Available"  -t':' -1 1 -2 3 vendors products
1201:Cromwell Interiors:S0107:Lobby Furniture
1221:Design Extras Inc.:S0109:Ballroom Specialties
1320:Piedmont Plastics Inc.:S0110:Poolside Carts
1340:Morgan Catering Service Ltd.:S0130:Formal Dining Specials
1350:Pullman Elevators
1360:Johnson Office Products
1410:S0201:Reservation Logs
<小时/>

关于linux - linux下如何加入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52864921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com