あるファイルからドメインの帯域幅を取得し、別のファイルからクリックの詳細を取得しようとします。
両方のファイルの形式は次のとおりです。
帯域幅.txt
aadrivingschool.ws 2840.36M aaspak.org 211.57M aasteknik.com 1419.26M aatonerpk.com 14.87M
ヒット.txt:
onlinestudyboard.com received 186 hits from 31/May/2016 at 1201 aaspak.org received 184 hits from 31/May/2016 at 1202 khawajarubber.com received 183 hits from 31/May/2016 at 1246 aatonerpk.com received 182 hits from 31/May/2016 at 1231
私が得たいものは:
onlinestudyboard.com received 186 hits from 31/May/2016 at 1201
aaspak.org received 184 hits from 31/May/2016 at 1202 211.57M
khawajarubber.com received 183 hits from 31/May/2016 at 1246
aatonerpk.com received 182 hits from 31/May/2016 at 1231 14.87M
ベストアンサー1
awk
1つの方法は次のとおりです。
$ awk 'FNR==NR{a[$1]=$2; next} {print $0,a[$1]}' bandwidth.txt hits.txt
onlinestudyboard.com received 186 hits from 31/May/2016 at 1201
aaspak.org received 184 hits from 31/May/2016 at 1202 211.57M
khawajarubber.com received 183 hits from 31/May/2016 at 1246
aatonerpk.com received 182 hits from 31/May/2016 at 1231 14.87M
説明する
awk
入力ファイルを1行ずつ読み、行をスペース(または指定された項目-F
)のフィールドに分割します。これらのフィールドは$1
$ 2 ...
$ N`です。
NR==FNR
:NRは現在の行番号、FNRは現在のファイルの行番号です。最初のファイルを読み取る場合のみ、両方とも同じです。a[$1]=$2; next
:これが最初のファイルの場合(上記を参照)、キーが最初のフィールドである配列に2番目のフィールドを保存します。print $0,a[$1]
:現在の行()と最初のフィールドに関連付けられた配列$0
の値を印刷します。a
これにより、2番目のファイルの現在の行と1番目のファイルの最初のフィールドに関連するすべての値が印刷されます。