【问题标题】:sed windows - find and replace with curly bracessed windows - 用花括号查找和替换
【发布时间】:2014-03-09 20:16:14
【问题描述】:

我想替换任何一个

...
title = {{ some text }}
...

...
title = { some text }
...

确实,我想将双花括号替换为一个(在 Windows 7 中)。

我想 sing sed 但显然 sed 在 windows 中无法正常工作。 这是一个显示问题的简单测试。 我想用一个 { 替换双花括号 {{ 。 这是我想要做的:

sed "s/{{/{/g" file.txt

但是我得到这个错误

sed: 1: "s/": unterminated substitute pattern

我已经看到了,但显然它在 Windows 操作系统中不起作用: sed find and replace with curly braces

知道怎么做吗?

【问题讨论】:

  • 你用的是什么sed版本,是CYGWIN还是sed for Windows。我在cygwin中运行你的命令sed "s/{{/{/g" file.txt没有问题。
  • @BMW 我使用的是sed for Windows,但它似乎不适用于{。在您发表评论后,我安装了CYGWIN,它工作正常。也许您想发表评论作为答案,然后我可以接受。
  • 当然,已更新答案。

标签: regex windows sed


【解决方案1】:

尝试逃避它们:

sed "s/\{\{/{/g" file.txt

【讨论】:

  • 我也试过了。这是我得到的错误:sed:1:“s//”:正则表达式中的未终止替换
  • 不起作用。我得到的错误: sed: 1: "'s//": invalid command code '
【解决方案2】:

用 ?

sed "s/\(\([{}]\)\2\)/\2/g"

避免在模式和关联解释中出现多个 { 和 }。 (同时为 { 和 } 工作)

【讨论】:

  • 它仍然不适用于sed for Windows,但它适用于CYGWIN
  • --posix 选项在 Windows 上可用(不是 sur,我发现的 GNU sed 文档没有指定这个)?也可以试试 -e bedore 命令字符串
  • 感谢您的评论。使用 -e 确实解决了sed for Windows 中的问题。但是,我选择了 CYGWIN,这似乎是因为我的问题与 sed 命令的 Linux 版本更一致。
【解决方案3】:

你用的是什么sed版本,是sed in CYGWIN还是sed for Windows。我在 cygwin 中运行你的命令 sed "s/{{/{/g" file.txt 没有问题。

如果您从 Windows 版本 sed for windows 运行 sed,它似乎不适用于 {。在 CYGWIN 中尝试。

【讨论】:

  • 另外一个答案是@NeronLeVelu 在对他的答案的评论中给出的答案(即使用sed for Windows 的-e 选项)
猜你喜欢
  • 2016-11-25
  • 2022-01-22
  • 2012-03-01
  • 2013-01-26
  • 2015-01-14
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多