1

I've an AWK command that is pretty long

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
    ....

I would like to know if it is possible to split this first part -where I set the variables for awk scope- into multi lines, with some backslashes or any other syntax.

I tried this approach:

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

and this was the error

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

I tried this approach:

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

and this was the error

awk: no program given

I tried this approach:

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

and this was the error

awk: no program given

Thanks in advance.

axel
  • 3,778
  • 4
  • 45
  • 72

1 Answers1

4

When you add an escape it's to escape the character that follows it. Putting it at the start of a line escapes whatever character follows it on that line instead of the command-terminating newline you want to escape at the end of the preceding line.

Do:

cmd foo \
    bar

instead of:

cmd foo
\    bar
Ed Morton
  • 188,023
  • 17
  • 78
  • 185