У меня есть большой файл 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"
. Обратите внимание на$
символ. Он работает нормально, за исключением того, что он не печатает закрытие}
bibitem. Кстати, использованиеsed
необходимо?