Как получить разделенный запятыми / табуляцией вывод HDFS Quota? - PullRequest
0 голосов
/ 10 января 2020

Я использую приведенную ниже команду для получения квоты 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/X

Ожидаемый результат:

none,inf,250 G,114.9 G,518,2.8 K,45.0 G,/new/directory/X

1 Ответ

0 голосов
/ 10 января 2020

Как насчет использования sed. Ключевым моментом является идентификация уникальной строки для идентификации разделителя в выводе hdfs. Это может быть вкладка, так как вы сказали, что они разделены табуляцией. Но в примере вывода, который вы разместили, использовались пробелы.

Как только вы определились с уникальной строкой, используйте sed для поиска этой уникальной строки и замените ее запятой. Похоже, что два или более пробелов являются уникальными для разделения полей в выходных данных hdfs во всех случаях, кроме начала строки и пути. Возможно, вы можете принять начальную запятую и сделать второй проход sed для пути.

Этот вопрос переполнения стека охватывает замену 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'
...