Подтвердить что ты не робот

Как установить разделитель табуляции с помощью psql -F

Я хочу отправить запрос выбора в текстовый файл с разделителями табуляции, используя psql -F. Однако это не работает:

psql -Umyuser mydb -F '\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt

Это делает разделитель буквальным \t. Как мне заставить его использовать реальные вкладки?

4b9b3361

Ответ 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'