У мене великий файл bibtex з багатьма записами, де кожен запис має загальну структуру
@ARTICLE{AuthorYear,
item = {...},
item = {...},
item = {...},
etc
}
(у деяких випадках ARTICLEможе бути інше слово, наприклад BOOK)
Що я хотів би зробити, це написати простий скрипт (бажано, просто сценарій оболонки), щоб витягнути записи з даним AuthorYear і помістити їх у новий .bib файл.
Я можу собі уявити, що я можу розпізнати перше речення запису від AuthorYear та останнє за одним закриттям }і, можливо, використовувати sedдля вилучення запису, але я не знаю, як це точно зробити. Хтось може сказати мені, як я цього досягну?
Напевно, це повинно бути щось на кшталт
sed -n "/AuthorYear/,/\}/p" file.bib
Але це припиняється через закриття }першого пункту запису, таким чином даючи такий вихід:
@ARTICLE{AuthorYear,
item = {...},
Тож мені потрібно визнати, чи }є єдиним символом у рядку, і лише у такому випадку перестати читати "sed".
sedзовсім не потрібно, я просто думав, що це буде найпростіший варіант. Я з’ясував трохи інший код: sed -n "/AuthorYear/, /^ *\}/p"який, здається, робить саме те, що я хочу, включаючи закриття }та виправлення пробілів, якщо такі є
sed -n "/AuthorYear/,/\}$/p". Зверніть увагу на$символ. Це добре працює, за винятком того, що він не друкує закриття}бібіту. Btw, чиsedпотрібне використання ?