gpt4 book ai didi

linux - 比较 2 个文件中的两列并使用 awk 替换另一列

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:56 25 4
gpt4 key购买 nike

$ cat input2 

0105|195267|99/99/9999|

0115|195719|77/77/7777|

0125|195505|88/88/8888|

0135|195719|00/00/0007|


$ cat input1

0105|195267|0|Header|StefenStarts|DIY|06/28/1984|6000|$1656.0000|$1656.0000|$0.0000|
0125|195505|0|Header|StellarCollar|DIY|01/01/1900|6000|$284.0000|$284.0000|$0.0000|
0115|195719|0|Header|DamoranKinsley|DIY|05/14/1980|6000|$5328.2500|$5328.2500|$0.0000|

预期输出:

0105|195267|0|Header|StefenStarts|DIY|99/99/9999|6000|$1656.0000|$1656.0000|$0.0000|
0125|195505|0|Header|StellarCollar|DIY|88/88/8888|6000|$284.0000|$284.0000|$0.0000|
0115|195719|0|Header|DamoranKinsley|DIY|77/77/7777|6000|$5328.2500|$5328.2500|$0.0000|

当文件 input1 的第一列和第二列与 input2 的第一列和第二列匹配时,input1 文件的第 7 列将替换为文件 input2 的第 3 列中存在的日期。

这个 awk 命令有效,但它只检查第二列。我需要检查第一列和第二列的组合。任何人都可以在这方面提供帮助。

尝试过:

awk 'NR==FNR{A[$2]=$3; next} $3==0 && $4=="Header" && $2 in A{$7=A[$2]}1' FS="|" OFS="|" input2 input1

第三行的输出不正确,因为它只检查第二列。它实际上应该检查第一列和第二列的组合。

0105|195267|0|Header|StefenStarts|DIY|99/99/9999|6000|$1656.0000|$1656.0000|$0.0000|
0125|195505|0|Header|StellarCollar|DIY|88/88/8888|6000|$284.0000|$284.0000|$0.0000|
0115|195719|0|Header|DamoranKinsley|DIY|00/00/0007|6000|$5328.2500|$5328.2500|$0.0000|

请输入任何信息..??

最佳答案

尝试以下。希望对您有所帮助。

awk 'NR==FNR{A[$1,$2]=$3; next} $3==0 && $4=="Header" && ($1,$2) in A{$7=A[$1,$2]}1' FS="|" OFS="|" input2 input1

关于linux - 比较 2 个文件中的两列并使用 awk 替换另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34450227/

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