0

我有一个包含许多这样的表达式的乳胶文件,例如\find{101.3}

我想做的是使用在 Windows 上运行的批处理文件进行某种形式的预处理,将这些表达式替换为:\replace{101}\and{3}

我假设我需要使用正则表达式。使用 Unix,我知道我可以做到这一点,sed而且我有一些可以工作的东西。

sed -e 's/\\find{\([0-9]*\)\.*\([0-9]*\)}/\\replace{\1}\\and{\2}/g' $1.tex>$1d.tex

但是我怎样才能把它转移到 Windows 批处理语言呢?

4

1 回答 1

0

哎哟。我最近看到了一些带有字符串搜索和替换的批处理功夫,但我非常怀疑它是否可以直接使用复杂的正则表达式。

它真的必须是一个批处理文件吗?
你有没有考虑过,即:

  • 安装最小的 GNU 环境?然后,您将在 windows 上拥有 grep、sed 和其他功能!
  • 使用 PowerShell 而不是批处理?它允许您编写利用完整 .Net 类库的脚本,因此 System.Text.Regex 就在手边
  • 如果不是 powershell,那么使用 VBScript (yuck) 或 javascript 也应该是可能的,但是使用文件 i/o 可能会变得很麻烦..

我个人不喜欢 powershell,所以我为这样的小任务设置了 PIK & Ruby 1.9.3。它还立即授予我一个最小的 GNU,所以

pik 193
ls -al | grep foo

奇迹般有效。在 Windows 控制台上。

编辑:

批处理文件中字符串替换的示例:https ://superuser.com/a/362405/233273 (虽然,不是正则表达式。只是常量->-常量替换)。该问题的一些答案还给出了powershell中类似事物的示例,并且也可以接受正则表达式。

于 2013-07-04T08:46:30.623 回答