Вычислить длину строки с пробелами в Unix только для файла фиксированной ширины - PullRequest
0 голосов
/ 21 февраля 2019

У меня файл фиксированной ширины, созданный с помощью скрипта BTEQ в Unix.Я могу правильно рассчитать длину для всех полей, пока поле не будет иметь какое-либо значение.

В скрипте BTEQ:

SELECT RPAD(COALESCE(SSO_ID,''),50,' ')||
RPAD(COALESCE(GENERIC4,''),100,' ')||
RPAD(COALESCE(GENERIC5,''),100,' ')||
RPAD(COALESCE(GENERIC6,''),100,' ')||
RPAD(COALESCE(GENERIC7,''),100,' ')||
RPAD(COALESCE(GENERIC8,''),100,' ')||
RPAD(COALESCE(GENERIC9,''),100,' ')||
RPAD(COALESCE(GENERIC10,''),100,' ')
FROM <view_name>

FILENM - это выходной файл, созданный с помощью вышеуказанного скрипта BTEQ:

LENGTH_SSO_ID=`cat  $FILENM | grep 57080249 |cut -c1361-1410| tr " " "~" | wc -c`
LENGTH_GENERIC4=`cat  $FILENM | grep 57080249 |cut -c1711-1810| tr " " "~" | wc -c`
LENGTH_GENERIC5=`cat  $FILENM | grep 57080249 cut -c1811-1910| tr " " "~" | wc -c`
LENGTH_GENERIC6=`cat  $FILENM | grep 57080249 cut -c1911-2010| tr " " "~" | wc -c`
LENGTH_GENERIC7=`cat  $FILENM | grep 57080249 cut -c2011-2110| tr " " "~" | wc -c`
LENGTH_GENERIC8=`cat  $FILENM | grep 57080249 cut -c2111-2210| tr " " "~" | wc -c`
LENGTH_GENERIC9=`cat  $FILENM | grep 57080249 |cut -c2211-2310| tr " " "~" | wc -c`
LENGTH_GENERIC10=`cat  $FILENM | grep 57080249 |cut -c2311-2410| tr " " "~" | wc -c`

Это вывод, который я получаю, в идеале я должен получить длину 100 для каждого столбца GENERIC.

LENGTH of SSO_ID=50
LENGTH of GENERIC4=5
LENGTH of GENERIC5=0
LENGTH of GENERIC6=0
LENGTH of GENERIC7=0
LENGTH of GENERIC8=0
LENGTH of GENERIC9=0
LENGTH of GENERIC10=0

Пожалуйста, сообщите, почему он дает неправильную длину для столбцов, которыевсегда иметь пробелы и встречаться в конце записи.

...