У меня есть переменная, которая хранит выходные данные файла. В этом выпуске я хотел бы напечатать первое слово после Database:
. Я довольно новыми для регулярных выражений, но это то, что я пытался до сих пор:Bash print word after match
sed -n -e 's/^.*Database: //p' "$output"
Когда я пытаюсь это, я получаю сообщение об ошибке sed: can't read prints_output: File name too long
.
Принимает ли sed
только имя файла? Я бегу улья запрос desc formatted table
и сохранение результатов в output
так:
output=`hive -S -e "desc formatted table"`
output
затем устанавливается в результате того, что:
...
# Detailed Table Information
Database: sample_db
Owner: sample_owner
CreateTime: Thu Feb 26 23:36:43 PDT 2015
LastAccessTime: UNKNOWN
Protect Mode: None
Retention: 0
Location: maprfs:/some/location
Table Type: EXTERNAL_TABLE
Table Parameters:
...
Сообщение об ошибке не имеет смысла без кода, который устанавливает '$ output' и способ, которым вы вызываете скрипт. На какой платформе вы работаете на этих 13 символах, слишком длинное имя файла? Даже ранние версии Unix поддерживали 14 символов в имени файла. Возможно, вам следует показать результат запуска 'bash -x your-script prints_output' или того, что вызывает вызов команды (параметр' -x' показывает, что Bash считает, что он делает, как он делает это, более или менее). –
@JonathanLeffler, который может быть моей первой ошибкой. Я пытаюсь передать переменную 'sed', а не имя файла. Я обновил OP, чтобы лучше отразить то, что я пытаюсь сделать. – raphnguyen