Isso localizará e realizará a troca conforme você está perguntando:
$ perl -lpe 's/\. (\cite.*)/$1./' afile
\cite{poelma20113d}.
Para que o liner faça a alteração real no arquivo:
$ perl -i.bak -lpe 's/\. (\cite.*)/$1./' afile
Isso manterá o arquivo original em afile.bak
. Se você quiser abrir mão dos arquivos .bak criados, poderá informar perl
para não fazer isso omitindo qualquer argumento para a opção -i
:
$ perl -i -lpe 's/\. (\cite.*)/$1./' afile
Como funciona
Os exemplos acima procuram os seguintes bits dentro de cada string do arquivo afile
.
-
\.
- procura por um literal . . -
s/.../../
- procura por um padrão e o substitui por outro padrão. -
(\cite.*)
- procura o padrão de um literal \ seguido pela stringcite
, seguido por qualquer outra coisa. Tudo isso é salvo em uma variável,$1
porque está envolto em parens (ou seja, (....) ). Nota :(\cite.*})
será interrompido quando atingir a chave direita}
. Dessa forma, a próxima sentença após o comandoLaTeX
\cite{}
, por exemplo, em. \cite{poelma20113d} This is the next sentence.
, será processada corretamente. -
$1.
-$1
é o que combinamos nos parênteses, então colocamos isso seguido por um . .