我正在尝试解析以下命令的输出
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
我希望这有点清楚,但可能不是。
答案 0 :(得分:2)
这是一个快速而肮脏的回复,但根据您的评论,这是否接近您想要的?
BEGIN { FS="[/]"; OFS="," } {
z = split($1,aa," ")
print aa[1],aa[2],aa[3],$2,$3,$(NF-1),$0
}