Nano Hash - криптовалюты, майнинг, программирование

Awk — цикл for путем сравнения двух файлов

У меня есть два больших файла.

Файл 1 выглядит следующим образом:

10 2864001 2864012
10 5942987 5943316

Файл 2 выглядит следующим образом:

10 2864000 28
10 2864001 28
10 2864002 28
10 2864003 27
10 2864004 28
10 2864005 26
10 2864006 26
10 2864007 26
10 2864008 26
10 2864009 26
10 2864010 26
10 2864011 26
10 2864012 26

Итак, я хочу создать цикл for таким образом, чтобы

  1. Первый столбец Файла 1 должен соответствовать первому столбцу Файла 2 И
  2. Чтобы запустить цикл for, сопоставьте второй столбец файла 1 со вторым столбцом файла 2 И
  3. Суммируйте третий столбец файла 2, пока третий столбец файла 1 не совпадет со вторым столбцом файла 2.

Таким образом, вывод приведенного выше примера должен быть суммой третьего столбца файла 2 для первой строки файла 1, которая равна 347. Я пытался использовать NR и FNR, но пока не смог этого сделать. Не могли бы вы помочь мне сгенерировать скрипт awk?

Большое спасибо

03.01.2014

Ответы:


1

Переписано, поэтому могут быть опечатки:

awk '
BEGIN { lastFNR=0; acount=0; FIRST="T"}

FNR < lastFNR {FIRST="F"; aindex=0; next}

FIRST=="T" {
      sta[acount] = $2
      fna[acount] = $3
      acount += 1
      lastFNR=FNR         
}

FIRST=="F" && $2 >= sta[index] && $2 <= fna[aindex] {
      sum[aindex] += $3
      lastFNR = FNR
}

FIRST=="F" && $2 > fna[aindex] {
      aindex ==1
      if (aindex > acount) { FIRST="E" }
}

END {
      for(aindex=0; aindex<acount; +=aindex) {
            print sta[aindex], "through", fna[index], "totals", sum[aindex]
      }
}
' file 1 file2
03.01.2014

2

Вы могли бы попробовать

awk -f s.awk file1 file2

где s.awk

NR==FNR {
    a[$1,$2]=$3
    next
}
($1,$2) in a {
    do {
        s+=$3
        if ((getline)+0 < 1) break
    } while ($2 != a[$1,$2])
    print s
}
{ s=0 }

выход:

319
04.01.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..