Вот краткое описание того, что я пытаюсь сделать:
Допустим, у меня в оболочке хранится CSV как переменная $. Это выглядит так:
account,index,quantity
100,AAPL,10
105,NFLX,25
110,TSLA,50
120,TWTR,45
Теперь я запрашиваю базу данных PSQL из оболочки следующим образом:
accounts=$(psql -d mydb -h mydb -f "SELECT account_num FROM accounts WHERE is_relevant")
Теперь у меня есть список учетных записей, которые хранятся в, казалось бы, неструктурированной переменной. Проще говоря, я хочу отфильтровать исходный CSV по значениям, указанным в запросе новых учетных записей.
1) Когда я вызываю echo для переменной, хранящей мой результат запроса, я получаю длинную строку вывода - просто объединенный список всех соответствующих учетных записей.
2) Когда я вызываю переменную head, каждый номер счета выдает ошибку:
head: cannot open '100' for reading: No such file or directory
Я вижу это и думаю: «shell не распознает эти записи как строки для печати, а скорее команды для запуска» - и я не уверен, как это исправить. Попытки использовать sed для размещения кавычек или запятых для разделения строк приводят к схожим ошибкам - либо в отношении отсутствующих файлов, либо несуществующих команд.
Хотя я подозреваю, что grep в конечном итоге правильный инструмент для этого - я хочу изложить это открыто. Как бы вы это сделали?
Редактировать: чтобы уточнить, учитывая мою исходную таблицу учетных записей, если запрос PSQL возвращает:
100
105
120
Я хочу отфильтровать исходную таблицу по этим значениям, чтобы получить:
account,index,quantity
100,AAPL,10
105,NFLX,25
120,TWTR,45
(Строка со счетом # 110 была отфильтрована.)