【问题标题】:Bash or Python : Append and prepend a string recursively in all .tex filesBash 或 Python:在所有 .tex 文件中递归地追加和前置一个字符串
【发布时间】:2017-10-20 11:21:10
【问题描述】:

我正在尝试找到一种方法来使用包“子文件”在 LaTeX 中更改我的主/子文档工作流程,因此我正在尝试附加并预先添加到我已经拥有以下几行的每个文件中:

要添加的行:

\documentclass[<mainfile>]{subfiles}
\begin{document}

要追加的行:

\end{document}

我正在考虑使用 bash,但我也可以使用 Python,但我不知道什么是最好的。

如果您有任何建议:-) ?

【问题讨论】:

  • 使用sed编辑文件会非常快。
  • 是的,发布输入片段和预期结果

标签: python bash append latex prepend


【解决方案1】:

一种直观的方式是使用cat

例如,首先创建两个文件prepend.tex 和append.tex,其中包含您要添加的内容。将它们与源文件连接以创建所需的目标文件

$ cat prepend.tex source.tex append.tex > target.tex

要将其递归应用于目录中的所有现有文件,例如src/,您可以使用:

$ find src/ -type f -name "*.tex" -exec sh -c "cat prepend.tex '{}' append.tex > '{}'.tmp" \;

这将在每个源文件旁边创建一个新的.tmp 文件。在继续用 .tmp 覆盖源文件之前,请确保这些 .tmp 文件中的结果exaclty是您想要的:

$ find src/ -type f -name "*.tmp" -exec rename -n 's/.tmp$//' '{}' \;

将rename命令的选项从-n更改为-f以强制覆盖

【讨论】:

  • 哇哇超级流畅!一秒钟的反思来处理每个文件,并且感觉使用临时文件非常安全(我会记住这一点!)。非常感谢!
  • @EtienneS 很酷,很高兴我能提供帮助 :) 顺便说一下,其他用户提到的 sed 或 awk 在需要更复杂的编辑时也可以派上用场。
  • 我尝试使用 sed,但它有点棘手:我还没有习惯(必须!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
  • 2016-07-06
  • 2020-07-09
相关资源
最近更新 更多