代码之家  ›  专栏  ›  技术社区  ›  axel

是否有可能将AWK命令拆分为多行而不会出错?

  •  0
  • axel  · 技术社区  · 5 年前

    我有一个相当长的AWK命令

    awk -v AWK_SECTION_TITLE="$SECTION_TITLE" -v AWK_ADDED="$ADDED" -v AWK_CHANGED="$CHANGED" -v AWK_FIXED="$FIXED" -v AWK_REMOVED="$REMOVED" 'NR=='"$CHANGELOG_INSERT_LINE"'{
        print AWK_SECTION_TITLE
        ....
    
    

    我想知道是否有可能将第一部分(我为awk作用域设置变量的部分)拆分为多行,并使用一些反斜杠或任何其他语法。

    我尝试了这种方法:

    awk
        \ -v AWK_SECTION_TITLE="$SECTION_TITLE"
        \ -v AWK_ADDED="$ADDED"
        ...
    

    这就是错误所在

    usage: awk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...]
    script.sh: line 65:  -v: command not found
    

    我尝试了这种方法:

    awk -v AWK_SECTION_TITLE="$SECTION_TITLE"
        \ -v AWK_ADDED="$ADDED" -v AWK_CHANGED="$CHANGED"
    

    这就是错误所在

    awk: no program given
    

    我尝试了这种方法:

    awk-v awk_SECTION_TITLE=“$SECTION_TITTLE”
    \-v AWK_ADDED=“$ADDED”-v AWK_ CHANGED=“$CHANGED”
    

    这就是错误所在

    awk:未提供程序
    

    提前感谢。

    0 回复  |  直到 5 年前
        1
  •  4
  •   Ed Morton    5 年前

    当你添加转义符时,它是为了转义它后面的字符。把它放在一行的开头会转义该行后面的任何字符,而不是你想在前一行末尾转义的命令终止换行符。

    做:

    cmd foo \
        bar
    

    而不是:

    cmd foo
    \    bar