如何在Windows下用awk替换单引号以引用双引号?

时间:2015-04-01 03:54:08

标签: windows awk file-processing

我尝试了gsub()但它没有用。这是命令:

awk -v a="'"  b=" \" "  "gsub(a,b,$0){print $0}" D:\re.json

或者任何人都可以告诉我Windows命令行中的转义字符是什么?

1 个答案:

答案 0 :(得分:1)

根据建议,将脚本放入文件中。参考Windows,我们将理解上下文是Windows批处理文件(而不是说mingw,它有自己的命令行脚本问题)。对于Windows批处理文件

  • 双引号在程序看到之前被吃掉
  • 没有详细记录的方法来逃避双引号
  • 单引号按原样传递给程序(并不像在Bourne shell中那样用于引用)。

以下是一些讨论这些问题的链接:

因此规则与awk对此构造的需求完全不同。顺便说一下,最后一个链接提供了一些线索,您可以使用这些线索来设计解决方法(以可读性为代价)。它也在Escaping Double Quotes in Batch Script中进行了讨论。

作为单独的文件,该脚本也更具可读性,例如,调用foo.awk

gsub("'"," \" ",$0){print $0}

并将其用作

awk -f foo.awk D:\re.json