2

我有两个文件,我必须从两个文件中提取我需要的列并将它们合并在一起。我想使用 awk 来做到这一点。

所以从 FileB 我需要 9->12 美元。如果 FileA 的 4 美元与 FileB 的 12 美元匹配,我需要 FileA 的 1 美元、2 美元、3 美元、5 美元和 6 美元。

这是我到目前为止所拥有的:

脚本.awk:

FNR==NR {
    blah = $12
    gsub(/"/,"",blah); gsub(/;/,"",blah);
    array[blah]=$9,$10,$11,$12  ## This breaks here
    next
}

{
    if ($4 in array) {
        print $1,"TransMap","Tcon",$2,$3,$5,$6,".",array[$4]
    }
}

我会这样运行: awk -f script.awk fileB fileA 所以请注意 FileB 的 $12 不是完全匹配的——任何与 $4 的匹配都将采用以下格式:"$4"; (因此是 gsubs)。我需要这种格式,而不是最终输出中的 $4 格式,这就是我这样做的原因。

数组[blah]=$9,$10... 换行 awk (显然)。但是我需要 FileB 中的所有 4 个字段——我将如何解决这个问题?awk 的在线说明不清楚。

4

1 回答 1

2

尝试

 array[blah]=$9","$10","$11","$12

我只能在没有看到数据的情况下猜测问题。我猜你想用逗号连接 9-12 美元。

于 2013-03-13T16:49:41.897 回答