2

2 つのファイルがあり、両方のファイルから必要な列を取得して、それらをマージする必要があります。これを行うには awk を使用したいと思います。

したがって、FileB からは $9->$12 が必要です。FileA の $4 が FileB の $12 の内容と一致する場合、FileA の $1、$2、$3、$5、および $6 が必要になります。

これが私がこれまでに持っているものです:

script.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 との一致は、次の形式になります。(したがって、gsubs)。最終出力の $4 にあるものとは対照的に、その形式が必要です。そのため、このようにしました。

array[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 に答える