Синтаксическая ошибка AWK - что ее вызывает? - PullRequest
3 голосов
/ 12 декабря 2011

У меня есть простой скрипт bash:

#!/bin/sh
column=${1:-1}
awk ' {colawk='$column'+2; print $colawk}'
awk '(x=4; print $x)'

Но я получил ошибку:

awk: (x=4; print $x)
awk:     ^ syntax error
awk: cmd. line:1: (x=4; print $x)
awk: cmd. line:1:                ^ unexpected newline or end of string

Почему? Код в предыдущей строке работает.

Ответы [ 2 ]

5 голосов
/ 12 декабря 2011

Программа AWK - это серия пар действий шаблона, записанная в виде:

condition { action }

, где condition обычно является выражением, а action - это серия команд.

print - это не выражение, а утверждение, поэтому синтаксическая ошибка , как и ожидалось.

2 голосов
/ 12 декабря 2011

Ваша проблема с использованием скобок вместо фигурных скобок.Вместо этого попробуйте:

awk '{x=4; print $x}'

, как в следующей расшифровке:

pax$ echo a b c d e | awk '(x=4; print $x)'
awk: cmd. line:1: (x=4; print $x)
awk: cmd. line:1:     ^ syntax error
awk: cmd. line:2: (x=4; print $x)
awk: cmd. line:2:                ^ unexpected newline or end of string

pax$ echo a b c d e | awk '{x=4; print $x}'
d
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...