【发布时间】:2015-12-24 18:07:51
【问题描述】:
$ 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|
请输入任何内容..??
【问题讨论】: