我有一份包含许多引号的文件。我需要用"(开始)和\quotation{(结束)替换所有}对,以便在上下文中使用,例如:

"Do not be afraid," said the tiger, "I am a vegetarian."

这应该变成:
\quotation{Do not be afraid,} said the tiger, \quotation{I am a vegetarian.}

文档中没有嵌套的引号。
只有当引号成对出现时,才应出现替换。如果一行有奇数个引号,则不应对该行进行更改,因为这表示存在错误。
如果开始和结束引号之间出现“/”字符,则应对该行进行模式更改,因为这是另一个错误指示。
每个段落出现在一行上,因此代码应该一次处理一行文档。
如何用上下文使用的格式替换这些引号?

最佳答案

不完美,但你可以试试这样的-

sed 's/"\(.[^"]*\)"/\\quotation{\1}/g' file

测试:
[jaypal:~/Temp] cat file
"Do not be afraid," said the tiger, "I am a vegetarian."

[jaypal:~/Temp] sed 's/"\(.[^"]*\)"/\\quotation{\1}/g' file
\quotation{Do not be afraid,} said the tiger, \quotation{I am a vegetarian.}

10-07 14:18