awk语句的语法问题

时间:2016-05-06 01:48:03

标签: linux bash awk

line=catsanddogs;awk -v var="$line" RS= '$3=="`var`"' master_file.sql > jaylog
awk: cmd. line:1: RS=
awk: cmd. line:1:    ^ unexpected newline or end of string

我正在尝试将变量合并到此语句中,但我无法使语法正常工作。

以下,当然可以正常使用:

awk -v RS= '$3=="`catsanddogs`"' master_file.sql > jaylog

1 个答案:

答案 0 :(得分:3)

有两个问题。

首先,由于在变量赋值之前没有使用-v选项,awk认为参数RS=是脚本,而且不是有效awk脚本。

其次,awk不会扩展引用字符串中的变量,而是按字面意思对待它们。您需要将var变量连接到反引号字符串,而不是将其放在字符串中。

awk -v var="$line" -v RS= '$3=="`" var "`"' master_file.sql > jaylog