Para tornar as novas linhas um não problema, poderíamos fazer uma substituição para que um parágrafo inteiro ou o arquivo inteiro seja processado como uma cadeia. Com Perl, poderíamos usar -0777
para ler o arquivo completo de uma só vez, ou -00
para usar o modo parágrafo (ou seja, seções separadas por linhas vazias, que naturalmente exigiriam que os números de linha não fizessem parte do arquivo de entrada ):
$ perl -0777 -pe 's/\x27\x27/"/g; s/\x27(.*?)\x27/‘$1’/gs; s/"(.*?)"/“$1”/gs; ' input
I have bowed before only one sanyasi in my life, and that is ‘Sri
Chandrasekharendra Saraswathi’, known to the world as the “Parmacharya.”
Therefore, I was the “modern
Indian”, believer in science, and
with little concern for spiritual
diversions.
Eu usei a representação hexagonal \x27
da aspa simples para facilitar a cotação. .*?
significa qualquer string, mas a menor correspondência possível. A primeira regra altera as aspas simples em ''
para aspas duplas.
Ou, da mesma forma com o GNU sed, -z
usa a entrada como strings separadas por NUL, então um arquivo de texto normal será lido de uma só vez:
$ sed -zEe 's/\x27\x27/"/g; s/\x27([^\x27]*)\x27/‘’/g; s/"([^"]*)"/“”/g; ' input
I have bowed before only one sanyasi in my life, and that is ‘Sri
Chandrasekharendra Saraswathi’, known to the world as the “Parmacharya.”
Therefore, I was the “modern
Indian”, believer in science, and
with little concern for spiritual
diversions.