Awk计算子字段

时间:2015-10-28 14:24:11

标签: awk

我有一个包含以下记录的文件:

11924  nt4dalmtg.er.usgs.gov            144.47.95.64               Sat, June/23/2001 7:21:57

我试图通过使用awk来计算不包含任何数字的子字段数。

这就是我的尝试:

                 'BEGIN{FS=".+|/+| ";for (i=1;i<=NF;i++)if($i ~/[^0-9]/) j++}
                   END{ print  j}' file.txt

它什么都不返回。我尝试了BEGIN END块的一些变化,但我不确定它是否是我的代码块或者我是否设置了字段分隔符?

2 个答案:

答案 0 :(得分:1)

你可以尝试,

awk 'BEGIN{FS="\\.+|\\/+|[ ]+";} 
{for (i=1;i<=NF;i++) if($i ~ /^[^0-9]+$/) j++}
END{print j}' file

你得到了

5

子字段是“呃”,“usgs”,“gov”,“Sat”和“June”

答案 1 :(得分:0)

只是尝试将for循环放在处理块而不是BEGIN块中......如下所示

# notice extra closed and open braces before for
$awk 'BEGIN{FS=".+|/+| ";} {for (i=1;i<=NF;i++)if($i ~/[^0-9]/) j++}  END{print j}' file.txt