在gawk中,gensub只打印一个反斜杠

在gawk中,gensub只打印一个反斜杠,awk,gawk,Awk,Gawk,在这下面,我期待着两次背后的打击,但得到一次 $ awk '{$0=gensub(/\[/,"\\\\","g")}1' <(echo [) \ $awk'{$0=gensub(/\[/,“\\\\\”,“g”)}1'这里解释了该行为: 从这一联系中可以看出,行为上的差异取决于 您正在使用哪个版本的awk,以及 如果使用gensub()或sub() 尝试8个斜杠-bash可能会将4个斜杠转义为2,然后awk将再次转义,结果是一个斜杠。@Njol.No,bash(或其他OS/shell)

在这下面,我期待着两次背后的打击,但得到一次

$ awk '{$0=gensub(/\[/,"\\\\","g")}1' <(echo [)
\

$awk'{$0=gensub(/\[/,“\\\\\”,“g”)}1'这里解释了该行为:

从这一联系中可以看出,行为上的差异取决于

  • 您正在使用哪个版本的
    awk
    ,以及
  • 如果使用
    gensub()
    sub()

尝试8个斜杠-bash可能会将4个斜杠转义为2,然后awk将再次转义,结果是一个斜杠。@Njol.No,bash(或其他OS/shell)与此无关。请参阅Hakonheagland的答案-字符串文本中的转义由awk解析两次,一次是在awk读取脚本时,另一次是在awk执行脚本时,并且(g)sub()处理反斜杠的规则与gensub()的规则不同,这是由于历史/POSIX/等原因。