使用 IF 语句时出现 AWK 语法错误
AWK syntax error while using the IF statement
虽然我以前使用过命令 prompt/terminal,但我对 AWK 还是很陌生。
我在下面有这个脚本,我在其中根据国家代码和州代码创建数据子集。但是我得到一个语法错误。
BEGIN{
FS = "\t"
OFS = "\t"
}
# Subset data from the states you need for all years
if ( == "IN-GA" || == "IN-DD" || == "IN-DN" || == "IN-KA" || == "IN-KL" || == "IN-MH" || == "IN-TN" || == "IN-GJ"){
if (substr(, 1, 4) == "2000"){
print , , , , , , , , , , , , > "Y2000_India_sampling_output.txt"
}
}
在 Cygwin 上,我参考脚本并 运行 下面的代码行,您立即看到语法错误:
$ gawk -f sampling_India.awk sampling_relFeb-2017.txt
gawk: sampling_India.awk:20: gawk if ( == "IN-GA" || == "IN-DD" || == "IN-DN" || == "IN-KA" || == "IN-KL" || == "IN-MH" || == "IN-TN" || == "IN-GJ"){
gawk: sampling_India.awk:20: ^ syntax error
有什么想法吗?
您的 if
条件未包含在 {...}
块中。
像这样:
BEGIN {
FS = OFS = "\t"
}
# Subset data from the states you need for all years
~ /^IN-(GA|DD|DN|KA|KL|MH|TN|GJ)$/ && substr(, 1, 4) == "2000" {
print , , , , , , , , , , , , > "Y2000_India_sampling_output.txt"
}
请注意如何使用正则表达式将多个 ==
条件合并为一个条件。
虽然我以前使用过命令 prompt/terminal,但我对 AWK 还是很陌生。
我在下面有这个脚本,我在其中根据国家代码和州代码创建数据子集。但是我得到一个语法错误。
BEGIN{
FS = "\t"
OFS = "\t"
}
# Subset data from the states you need for all years
if ( == "IN-GA" || == "IN-DD" || == "IN-DN" || == "IN-KA" || == "IN-KL" || == "IN-MH" || == "IN-TN" || == "IN-GJ"){
if (substr(, 1, 4) == "2000"){
print , , , , , , , , , , , , > "Y2000_India_sampling_output.txt"
}
}
在 Cygwin 上,我参考脚本并 运行 下面的代码行,您立即看到语法错误:
$ gawk -f sampling_India.awk sampling_relFeb-2017.txt
gawk: sampling_India.awk:20: gawk if ( == "IN-GA" || == "IN-DD" || == "IN-DN" || == "IN-KA" || == "IN-KL" || == "IN-MH" || == "IN-TN" || == "IN-GJ"){
gawk: sampling_India.awk:20: ^ syntax error
有什么想法吗?
您的 if
条件未包含在 {...}
块中。
像这样:
BEGIN {
FS = OFS = "\t"
}
# Subset data from the states you need for all years
~ /^IN-(GA|DD|DN|KA|KL|MH|TN|GJ)$/ && substr(, 1, 4) == "2000" {
print , , , , , , , , , , , , > "Y2000_India_sampling_output.txt"
}
请注意如何使用正则表达式将多个 ==
条件合并为一个条件。