【发布时间】:2013-04-27 18:58:52
【问题描述】:
我有一个日志文件,其中每一行包含一些由, 分隔的数字。我只是想对每个数字进行一些操作。使用 awk 似乎很容易,但不知何故我被卡住了。我用来分割每一行的数组在第一行只被初始化一次。在那之后,阵列并不清楚。 split 应该先清除数组然后使用它,我什至使用过delete array。但问题仍然存在。任何帮助将不胜感激。
下面是一些例子;
这是一个示例文件
[[bash_prompt$]]$ cat log
1,2,3
2
9
1,4
5,7
7
8
6,2
这就是我得到的
[[bash_prompt$]]$ awk '{print "New Line " $1; delete a; split($1,a,","); for(var in a){ print "Array Element " var; } }' log
New Line 1,2,3
Array Element 1
Array Element 2
Array Element 3
New Line 2
Array Element 1
New Line 9
Array Element 1
New Line 1,4
Array Element 1
Array Element 2
New Line 5,7
Array Element 1
Array Element 2
New Line 7
Array Element 1
New Line 8
Array Element 1
New Line 6,2
Array Element 1
Array Element 2
但下面是我所期待的
[[bash_prompt$]]$ awk '{print "New Line " $1; delete a; split($1,a,","); for(var in a){ print "Array Element " var; } }' log
New Line 1,2,3
Array Element 1
Array Element 2
Array Element 3
New Line 2
Array Element 2
New Line 9
Array Element 9
New Line 1,4
Array Element 1
Array Element 4
New Line 5,7
Array Element 5
Array Element 7
New Line 7
Array Element 7
New Line 8
Array Element 8
New Line 6,2
Array Element 6
Array Element 2
我的是 GNU Awk 3.1.5。我还通过结合使用 shell 和 awk 找到了另一种方法(在每一行上单独运行 awk),但我想知道我做错了什么
【问题讨论】:
-
你想要的输出是什么?
-
当我得到
New Line 5,7时,接下来的 2 行应该打印 5 和 7,但它打印的是 1,2,它在开始时被输入到数组中。 -
我的意思是完整的输出。使用它来检查不正确的地方会更容易
-
我已经更新了这个问题。如您所见,数组元素在拆分调用后没有得到更新。我将为每个数组元素添加进一步的处理。所以只是打印不是我要问的,我正在寻找我在将每一行分成一个数组时犯了什么错误。或者为什么每次拆分调用后数组没有更新。
-
parkydr 发现了问题,我是在检查索引值,而不是使用索引。谢谢各位
标签: awk