Как установить разделитель табуляции с помощью psql -F
Я хочу отправить запрос выбора в текстовый файл с разделителями табуляции, используя psql -F. Однако это не работает:
psql -Umyuser mydb -F '\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt
Это делает разделитель буквальным \t. Как мне заставить его использовать реальные вкладки?
Ответы
Ответ 1
Я думаю, что вам просто нужно использовать буквенную вкладку. Как это работает, зависит от вашей оболочки. Вы видели этот пост?
В оболочке bash вы можете сделать это с помощью $'\t'
.
Используя пример в вашем вопросе:
psql -Umyuser mydb -AF $'\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt
От man bash
:
Слова вида $ 'string' обрабатываются специально. Слово расширяется до строки, символы с обратной косой чертой заменяются в соответствии со стандартом ANSI C. [...] Расширенный результат заключен в одинарные кавычки, как если бы знак доллара отсутствовал.
Ответ 2
В Unix вы также можете ввести
ctrl-V tab
ctrl-V говорит терминалу не интерпретировать следующий ключ.
Это также работает с возвратом каретки (^ M) и многими другими специальными клавишами, такими как клавиши со стрелками
Ответ 3
Если кто-то искал, как это сделать в интерактивной оболочке:
\f '\t'