我有一个名为a.tex的.tex文件,其中包含许多行文本,如下例所示:
\begin{pycode}
Some text right here, let's say Text 1A: like: There are #cat and #dog.
\end{pycode}
Some text right here, let's say Text 1B: like: One day the #dog tried to run away.
\begin{pycode}
Some text right here, let's say Text 2A: like: There are #cat and #dog and #pig.
\end{pycode}
Some text right here, let's say Text 2B: like: There is #something here.
我想用“提到的文本的编号”替换任何#,例如,句子“有#猫和#狗。”应改为“这是一只1dog和1cat。”,因为它在课文1A中。而“有一天#狗试图逃跑。”应改为“有一天1dog试图逃跑。”而“有#猫和#狗和#Pig。”应改为“有两只猫、两只狗和两只Pig等等。
输出为.tex文件,此更改应用于整个文档。
所以我要的是:
\begin{pycode}
Some text right here, let's say Text 1A: like: There are 1cat and 1dog.
\end{pycode}
Some text right here, let's say Text 1B: like: One day the 1dog tried to run away.
\begin{pycode}
Some text right here, let's say Text 2A: like: There are 2cat and 2dog and 2pig.
\end{pycode}
Some text right here, let's say Text 2B: like: There is 2something here.
我的想法是从第一行开始搜索和替换。例如,如果我们看到“开始{pycode}”,那么s = s+1(对于某个计数变量s),然后搜索#,然后用s替换它,直到我们遇到下一个“begin{pycode}"。
我正在以这种方式寻找解决方案,但仍然需要时间来找到解决方案。
谢谢你的帮助。
2条答案
按热度按时间f1tvaqid1#
hc8w905p2#
您可以像这样使用'sed'命令:
在您的情况下:
它所做的是在一个.tex文件中找到所有出现的'#'字符串,用$i的值替换它们,并将它们保存到输出.tex文件中。如果你想读取并保存到同一个文件中,只需用途:
您可以在此处阅读有关“sed”命令的更多信息:Linux sed command