在OpenVMS上输出awk中的双引号

时间:2016-01-07 11:57:36

标签: awk openvms

在openvms系统上运行GNU Awk 3.1.1。任何人都知道如何输出双引号字符。尝试各种方式,没有运气,例如

$ gawk "BEGIN {print "Hello, World"}" NL:
/chas$dka0/psx$root/bin/gawk: cmd. line:2: (END OF FILE)
/chas$dka0/psx$root/bin/gawk: cmd. line:2: parse error

$ gawk "BEGIN {print "\"Hello, World\""}" NL:
/chas$dka0/psx$root/bin/gawk: cmd. line:1: BEGIN {print \Hello, World\"}
/chas$dka0/psx$root/bin/gawk: cmd. line:1:              ^ backslash not last character on line

我最近的是

$ gawk "BEGIN {print ""Hello, World""}" NL:
Hello, World

但是没有前导或尾随“出现

2 个答案:

答案 0 :(得分:0)

知道了!

$ gawk -v qte="""" "BEGIN {print qte""hello world""qte}" NL:
"hello world"

答案 1 :(得分:0)

或者您可以使用

$ gawk "BEGIN {print ""\""Hello, World\""""}" nl:

您可能知道,要让DCL在字符串中包含引号字符,您必须将其加倍。对于DCL,gawk程序文本是带引号的字符串。在程序文本中,您需要另一个字符串,一个gawk引用的字符串。因此,DCL将所有加倍的引号字符替换为单个字符。换句话说,DCL通过

BEGIN {print "\"Hello, World\""}

作为gawk的程序文本。这可以通过简单的

进行验证
$ write sys$output "BEGIN {print ""\""Hello, World\""""}"

在一个gawk字符串中,你必须用'\'转义gawk引号字符。

在您的解决方案中,DCL通过

BEGIN {print qte"hello world"qte}

作为gawk的程序文本,打印qte的内容,字符串`hello world',再次打印qte的内容。