У меня много ссылок в файле 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}},
Используя 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}
}
Это прекрасно работает:
perl -i.bak -pe 's|^(\s*title=)(.+?)(,)$|$1\{\\textbf$2\}$3|' ProgRef.bib
Это переформатирует все части заголовка и предполагает, что в каждой строке есть только один заголовок. Он также создает резервную копию вашего файла (с расширением .bak
).
Обновление: если ваш входной файл имеет окончания строк DOS / Windows, сделайте следующее:
sudo apt-get install dos2unix
dos2unix ProgRef.bib