удаление всех вкладок в sqlplus

Я могу решить эту проблему, но не понимаю, почему это происходит.

Моя задача: (в ksh)

  • 1-й шаг: запросить число из БД с помощью sqlplus,
  • 2-й шаг: отформатировать текст для письма,
  • 3-й шаг: отправить письмо с этими .

Это часть моего кода:

psnr() {
sqlplus -s USR/PASS@PROD << EOS
SET PAGESIZE 0
SET COLSEP ";"
SET FEEDBACK OFF
SET TRIMOUT ON
SET TRIMSPOOL ON
  select max_number-last_number from postalslip
  where state = 'OPEN'
/
exit
/
EOS
}

Когда я вызываю эту функцию, я получил номер 1234567.

PSNR=$(psnr)

Я пишу слово для письма:

echo "Today's result is: $PSNR" > $MAILTMP

если я хочу использовать эту переменную MAILTMP , я должен использовать tr -d '\ 040 \ 011' то, что я нашел здесь , в stackexchange, потому что результат без tr будет следующим:

od -c mailtmp.17872.txt
0000000   T   o   d   a   y   '   s       r   e   s   u   l   t       i
0000020   s   :      \t                               1   2   3   4   5
0000040   6   7  \n
0000043

Эта вкладка '\ t' - это то, чего я не понимаю: откуда она взялась, из sqlplus? Возможно специфика БД? (Я проверил в TOAD, оба столбца имеют номер (18). Может быть, у функции в ksh есть какие-то особенности?

0
14.07.2017, 19:48
1 ответ
sqlplus <<'EOF' | perl -pe 's/\t//g'
Some queries here
EOF

Это при условии, что пробел является вкладкой. Мои запросы sqlplus выводят только spaceи в формате csv, поэтому я использую это для удаления ненужного пробела

 

echo 'foo bar      ,baz     ,foobar   ' | perl -pe 's/ +,/,/g ; s/ +$//g'
foo bar,baz,foobar
0
28.01.2020, 02:35

Теги

Похожие вопросы