尝试通过awk

时间:2016-11-15 21:51:55

标签: awk

我正在尝试解析以下命令的输出

hdfs dfs -count 

在大多数情况下,我可以得到我想要的东西,但是,我遇到了第一件

的问题
   1           23            1118275 /user/data/system/sys_1/...
   1           23            1515762 /user/data/system/sys_2/...
   1           23            1892459 /user/data/system/sys_3/...

我使用awk来处理......例如......

 awk ' BEGIN { FS="[/]"; OFS="," } { print $1,$2,$3,$(NF-1),$0 } '

...但我得到的第一个块是未处理的,例如......

   1           23            1118275 
   1           23            1515762 
   1           23            1892459 

我试过......

{ FS="[ /]"; OFS="," }

但是有一个空格但是它给了我一个共时的输出,它没有看到/

所以,总结一下,我可以通过/只解析一点,它似乎忽略了块空间。

如果对此感到困惑,我道歉,解释发生了什么是非常棘手的。基本上$ 1是一个块,我无法正确处理它。我尝试将其解析为FS =" /"但那根本不起作用。

substr($ 1,x,y)也无法正常工作,它认为将块视为无法拆分的东西。我现在正在这样做......

awk ' BEGIN { FS="[/]" } { print substr($1,37) } '

我隔离了文件大小......

 1118275
 1515762
 1892459
 1990075
  882355
 2125763
 1841735
 2260994
 1082926
13649144

但如果我尝试这样的话......

 awk ' BEGIN { FS="[/]" } { print substr($1,24,24) } '

我明白了......

23            1118275
23            1515762
23            1892459
23            1990075
23             882355
23            2125763
23            1841735

我希望这有点清楚,但可能不是。

1 个答案:

答案 0 :(得分:2)

这是一个快速而肮脏的回复,但根据您的评论,这是否接近您想要的?

BEGIN { FS="[/]"; OFS="," } {
    z = split($1,aa," ")
    print aa[1],aa[2],aa[3],$2,$3,$(NF-1),$0
}