bash - захват разделов таблицы улья с помощью grep и regex - PullRequest
1 голос
/ 10 октября 2019

Я пытаюсь получить имена столбцов разделов таблицы кустов в bash, используя grep и regex. Я пытаюсь это:

hive -e 'show create table employees'  | grep -E 'PARTITIONED BY (.*)'

Это дает мне результат как: PARTITIONED BY (

Как мне изменить мою команду, чтобы захватить эту часть:

PARTITIONED BY ( year char(4), month char(2))

Конечная цель для меня - собрать все столбцы разделов в переменные или массивы, чтобы я мог использовать их позже. Если есть лучший способ добиться того, что я пытаюсь сделать, я тоже открыт для этого.

Буду признателен за любую помощь.

Спасибо.

1 Ответ

1 голос
/ 10 октября 2019

Вы можете использовать

hive -e 'describe formatted employees' | \
  awk '/Partition/{p=1; next} /Detailed/{p=0} p' | \
    grep -oE '^[[:alnum:]_]+'

. describe formatted employees даст лучше отформатированный вывод, описывающий таблицу, awk '/Partition/{p=1; next} /Detailed/{p=0} p' извлечет блок текста, который находится между Partition и Detailed, исключаясоответствующие строки и grep -oE '^[[:alnum:]_]+' будут выбирать только те слова, которые находятся в начале строк и содержат только буквы или цифры. Если могут быть только буквы, замените [:alnum:] на [:alpha:].

...