0
我有一些gawk开关盒语句的问题。当我用常量字符串使用switch case时,每件事情都可以正常工作,但是我使用了一个常量变量。具有常量变量的awk开关盒
为了更好的解释两个例子。
这个例子正常工作:
BEGIN {
...
}
END {
split($0,a,", ")
for (k in a)
{
switch (a[k])
{
case "COLUMN 1":
POSITION = k
print k,a[k]
break
default:
print "Error"
exit
break
}
}
这个例子给了我一个语法错误:
BEGIN {
COLUMN_NAME = "COLUMN 1"
}
END {
split($0,a,", ")
for (k in a)
{
switch (a[k])
{
case COLUMN_NAME : #Syntax Error in this line
POSITION = k
print k,a[k]
break
default:
print "Error"
exit
break
}
}
我不知道,如果AWK使得COLUMN_NAME一个恒定的,但我没有找到任何办法强制这一点。 我甚至尝试使用if/else这两种情况下工作正常。
编辑: 下面是awk脚本应该做的解释。我有一个CSV文件看起来像这样:
COLUMN 1, COLUMN 2, COLUMN 3, COLUMN 4
1, 2, 3, 4
5, 6, 7, 8
...
但该文件甚至可以是这样的:
COLUMN 3, COLUMN 2, COLUMN 4, COLUMN 1
1, 2, 3, 4
5, 6, 7, 8
...
我知道列的名称,但我不知道现在的位置。所以我使用split函数解析列名,并使用开关来找到正确的位置。
如果您发布了一些数据以及您想要从中获得什么,我们可能会创建另一个工作解决方案。 – Jotne 2014-10-17 07:31:46
我添加了awk脚本应该提供的工作。 – 2014-10-17 07:49:41