首页 > 解决方案 > 不解析 -v 中的字符串

问题描述

如何告诉 awk 不要使用-v选项解析变量赋值中的字符串:

$ awk -v s='\n' 'BEGIN {print "[" s "]"}'
[
]

它不解析以下

$ echo '\n' | awk '{print "[" $0 "]"}'
[\n]
$ awk 'BEGIN {print "[" ARGV[1] "]"}' '\n'
[\n]
$ s='\n' awk 'BEGIN {print "[" ENVIRON["s"] "]"}'
[\n]

并在下面解析

$ awk 'BEGIN {s = "\n"; print index(s, "n"), index(s, "\n")}'
0 1

标签: awk

解决方案


只需添加一个额外的反斜杠来转义反斜杠:

$ awk -v s='\\n' 'BEGIN {print "[" s "]"}'
[\n]

推荐阅读