sed find替换正则表达式窗口

时间:2013-07-04 08:33:57

标签: regex

我有一个包含许多此类表达式的乳胶文件,例如\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批处理语言?

1 个答案:

答案 0 :(得分: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(但不是正则表达式。只是常量 - > -constant替换)。对于这个问题的一些答案也给出了类似于PowerShell的例子,并且也会接受正则表达式。