Когда я создаю таблицу кустов desc, как показано ниже, в CLI терминала Linux.
hive -e "desc hive_db.hive_table"
Я получаю следующий вывод
date string
entity string
key int
id string
direction string
indicator string
account_number string
document_date string
Теперь я хочу перенаправить вывод в файл, прежде чем делать это. Я хочу удалить пробелы между каждым полем и иметь только один пробел между ними.
Ожидаемый результат ниже
date string
entity string
key int
id string
direction string
indicator string
account_number string
document_date string
Я пробовал, как показано ниже
hive -e "desc hive_db.hive_table" | tr -s " " > abc.txt
Результат, который я получаю,
date string
entity string
key int
id string
direction string
indicator string
account_number string
document_date string
Вывод, который я получаю, близок, но у меня есть one space and one tab между каждым полем в каждой строке.
Как я могу достичь того, чего хочу?





Пытаться:
hive -e "desc hive_db.hive_table" | sed -E 's/[[:space:]]+/ /' > abc.txt
[[:space:]]+ соответствует одному или нескольким пробелам любого типа (табуляции, пробелу или другому, включая любые пробелы, определенные в Юникоде). s/[[:space:]]+/ / заменяет эту последовательность пробелов одним пробелом.
Возможный дубликат Как заменить несколько пробелов одним пробелом с помощью Bash?, Команда sed для замены нескольких пробелов на отдельные пробелы, Как убрать лишние пробелы в bash? и т. д.