Linux 如何获得HDFS配额的逗号/制表符分隔输出?
我正在使用下面的命令来检索HDFS配额,但我不希望有奇特的输出。相反,我需要以逗号或制表符分隔的格式存储此输出。默认情况下,它不是分隔的选项卡。。有人能提出这个建议吗 命令:Linux 如何获得HDFS配额的逗号/制表符分隔输出?,linux,hadoop,hdfs,Linux,Hadoop,Hdfs,我正在使用下面的命令来检索HDFS配额,但我不希望有奇特的输出。相反,我需要以逗号或制表符分隔的格式存储此输出。默认情况下,它不是分隔的选项卡。。有人能提出这个建议吗 命令: hdfs-dfs-count-q-h-v/path/to/directory 输出如下: none inf 250 G 114.9 G 518 2.8 K 45.0 G /new/directory/
hdfs-dfs-count-q-h-v/path/to/directory
输出如下:
none inf 250 G 114.9 G 518 2.8 K 45.0 G /new/directory/X
预期产出:
none,inf,250g,114.9g,518,2.8k,45.0g,/new/directory/X
使用sed怎么样。它们的关键是识别一个唯一的字符串,以识别hdfs输出中的分隔符。那可能是tab,因为你说它们是分开的。但是,您发布的示例输出使用了空格
一旦确定了唯一字符串,使用sed搜索该唯一字符串并用逗号替换。看起来,除了行的起点和路径之外,hdfs输出中的字段分隔在所有情况下都是两个或多个空格所独有的。也许您可以接受一个前导逗号并对路径执行第二次sed
替换连续的空格
hdfs dfs -count -q -h -v /path/to/directory | sed -e "s/[[:space:]]\{2,\}/,/g" | sed -e "s/[[:space:]]\//,\//g"
如果是选项卡,则解决方案更简单
hdfs | sed -e $'s/\t/,/g'