Извлечение записей bibtex на основе года - PullRequest
0 голосов
/ 21 января 2020

Хорошо, я получил файл file.bib с несколькими записями, такими как

@Book{Anley:2007:shellcoders-handbook-2nd-ed,
  author =   {Chris Anley and John Heasman and Felix Lindner and Gerardo
    Richarte},
  title =    "{The Shellcoder's Handbook}",
  publisher =    {Wiley},
  year =     2007,
  edition =      2,
  month =    aug,
}

, там вы можете найти строку "year = 2007". Моя задача состоит в том, чтобы отфильтровать годы, которые больше чем 2020 ($ currentyear) или ниже чем 1900 ($ minyear), результатом должен быть также результат месяца "may", который стоит за линией "year" в этот файл. (Что является ошибкой со стороны администратора). (кстати, длина файла превышает 4000 строк).

1 Ответ

1 голос
/ 21 января 2020

Для этого лучше использовать awk. Как и в вашей строке, он будет читать:

awk -v t1="1900" -v t2="$(date "+%Y")" \
    '!match($0,/year.*=.*/){next}
     {t=substr(RSTART,RLENGTH)
      match(t,/[0-9][0-9][0-9][0-9]/)
      y=substr(RSTART,RLENGTH)
     }
     (y > t1) && (y <= t2) { print y }' file
...