Используйте regex для форматирования заголовка ссылки в файле BibTeX

У меня много ссылок в файле BibTeX:

@inproceedings{lechartier2014static,
  title={Static and Dynamic Modeling of a PEMFC for Prognostics Purpose},
  author={Lechartier, Elodie and Gouriveau, Rafael and Pera, Marie-Cecile and Hissel, Daniel and Zerhouni, Noureddine},
  booktitle={Vehicle Power and Propulsion Conference (VPPC), 2014 IEEE},
  pages={1--5},
  year={2014},
  organization={IEEE}
}
@inproceedings{zein2013statistical,
  title={Statistical approach to online prognostics of turbine engine components},
  author={Zein-Sabatto, Saleh and Bodruzzaman, Jabir and Mikhail, Mervat},
  booktitle={Southeastcon, 2013 Proceedings of IEEE},
  pages={1--6},
  year={2013},
  organization={IEEE}
}

Ссылка на исходный файл (количество пробелов перед каждой записью title= варьируется).

Как я могу использовать регулярные выражения, чтобы изменить всю часть заголовка на:

  title={\textbf{Static and Dynamic Modeling of a PEMFC for Prognostics Purpose}},
0
задан 12 October 2015 в 09:17

2 ответа

Используя sed:

sed 's/^\( *\)title=\(.*\),/\1title={\\textbf\2},/' in

, Чтобы отредактировать файл, оперативный вместо того, чтобы печатать отредактированный файл к stdout, добавьте -i выбор:

sed -i 's/^\( *\)title=\(.*\),/\1title={\\textbf\2},/' in
  • \( *\): матчи и группы любое количество знаки в начале линии;
  • title=: соответствует ^title= последовательность;
  • \(.*\),: матчи и группы любое количество любого характера перед , характер жадно и , характер;
  • title={\\textbf\1},: заменяет матч title={\textbf последовательность, сопровождаемая захваченной группой, сопровождаемой }, последовательность;
% cat in
@inproceedings{lechartier2014static,
  title={Static and Dynamic Modeling of a PEMFC for Prognostics Purpose},
  author={Lechartier, Elodie and Gouriveau, Rafael and Pera, Marie-Cecile and Hissel, Daniel and Zerhouni, Noureddine},
  booktitle={Vehicle Power and Propulsion Conference (VPPC), 2014 IEEE},
  pages={1--5},
  year={2014},
  organization={IEEE}
}
@inproceedings{zein2013statistical,
  title={Statistical approach to online prognostics of turbine engine components},
  author={Zein-Sabatto, Saleh and Bodruzzaman, Jabir and Mikhail, Mervat},
  booktitle={Southeastcon, 2013 Proceedings of IEEE},
  pages={1--6},
  year={2013},
  organization={IEEE}
}
% sed 's/^\( *\)title=\(.*\),/\1title={\\textbf\2},/' in
@inproceedings{lechartier2014static,
  title={\textbf{Static and Dynamic Modeling of a PEMFC for Prognostics Purpose}},
  author={Lechartier, Elodie and Gouriveau, Rafael and Pera, Marie-Cecile and Hissel, Daniel and Zerhouni, Noureddine},
  booktitle={Vehicle Power and Propulsion Conference (VPPC), 2014 IEEE},
  pages={1--5},
  year={2014},
  organization={IEEE}
}
@inproceedings{zein2013statistical,
  title={\textbf{Statistical approach to online prognostics of turbine engine components}},
  author={Zein-Sabatto, Saleh and Bodruzzaman, Jabir and Mikhail, Mervat},
  booktitle={Southeastcon, 2013 Proceedings of IEEE},
  pages={1--6},
  year={2013},
  organization={IEEE}
}
1
ответ дан 12 October 2015 в 19:17
  • 1
    Должно все еще быть то же. Ответы остаются релевантными, по крайней мере, большинство из них. – Nightglare 31 December 2016 в 01:45

Это прекрасно работает:

perl -i.bak -pe 's|^(\s*title=)(.+?)(,)$|$1\{\\textbf$2\}$3|' ProgRef.bib

Это переформатирует все части заголовка и предполагает, что в каждой строке есть только один заголовок. Он также создает резервную копию вашего файла (с расширением .bak).

Обновление: если ваш входной файл имеет окончания строк DOS / Windows, сделайте следующее:

  1. sudo apt-get install dos2unix
  2. dos2unix ProgRef.bib
  3. запустите приведенное выше регулярное выражение
0
ответ дан 12 October 2015 в 09:17

Другие вопросы по тегам:

Похожие вопросы: