我有一份包含许多引号的文件。我需要用"
(开始)和\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.}