両方のファイルの文字列を比較し、出力をマージします。

両方のファイルの文字列を比較し、出力をマージします。

あるファイルからドメインの帯域幅を取得し、別のファイルからクリックの詳細を取得しようとします。

両方のファイルの形式は次のとおりです。

  1. 帯域幅.txt

    aadrivingschool.ws       2840.36M
    aaspak.org               211.57M
    aasteknik.com            1419.26M
    aatonerpk.com            14.87M
    
  2. ヒット.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

awk1つの方法は次のとおりです。

$ 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番目のファイルの最初のフィールドに関連するすべての値が印刷されます。

答え2

そしてタイプ編集する 参加するそして一部強く打つ教義:

join -a 1 <(sort hits.txt) <(sort bandwidth.txt) | column -t | sort -nrk3

3種類が必要です。 2つ目は、入力ファイルが共通フィールドごとにソートされていないためです。参加するソートされた入力が必要です。その他タイプ(3番目のフィールド、逆数)は、OPのソート順序を復元するために必要です。

出力:

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

出力順序が重要ではなく、入力ファイルはい事前分類:

join -a 1 hits.txt bandwidth.txt | column -t

関連情報