Строковая операция в сценарии оболочки - PullRequest
0 голосов
/ 31 октября 2018
SELECT PARTITION_DATE||'|'||RECORD_ID||'|'||BILLING_ACCOUNT_NUM||'|'||BILLING_AC COUNT_SYSTEM||'|'||BILL_SERIAL_NUM||'|'||BILL_VERSION_NUM||'|'||SERVICE_ACCOUNT_ NUM||'|'||SERVICE_ACCOUNT_SYSTEM||'|'||PRIMARY_ASSET_ID||'|'||ASSET_ID||'|'||CHA RGE_CATEGORY||'|'||CHARGE_GROUP||'|'||CHARGE_TYPE||'|'||CHARGE_DATE||'|'||CHARGE _END_DATE||'|'||CHARGE_TIME||'|'||ORIGINATING_NUM||'|'||CHARGECARD_NUM||'|'||DIA LLED_NUM||'|'||COUNTRY_CODE||'|'||MOBILE_PROVIDER_CODE||'|'||DURATION||'|'||TM_C ALL_QUANTITY||'|'||DATA_UPLOAD||'|'||DATA_DOWNLOAD||'|'||CONTENT_DESCRIPTION||'| '||COST||'|'||COST_BEFORE_DISCOUNT||'|'||DISCOUNT||'|'||ROAMING_IND||'|'||VAT_IN D||'|'||VAT_RATE||'|'||CHARGE_CODE||'|'||SOURCE_SYSTEM||'|'||DESTINATION||'|'||F ILE_KEY||'|'||CREATED_DT||'|'||UPDATED_DT||'|'||CALLING_NUMBER||'|'||EVENT_DIREC TION||'|'||EVENT_TYPE||'|'||EVENT_ROAMING_COUNTRY||'|'||DISCOUNT_INDICATOR||'|'| |ACCT_CODE||'|'||AUTH_CODE||'|'||ACCESS_CHARGE||'|'||SERVICE_CHARGE||'|'||IMEI_N UMBER||'|'||EFB_FLAG||'|'||RATING_DISCOUNT_NAME||'|'||SUMM_USAGE_FLAG_BKP||'|'|| SUMM_USAGE_FLAG||'|'||PRE_BUNDLE_COST||'|'||POST_BUNDLE_COST||'|'||CFB_COUNTRY_C ODE FROM BILLEDUSAGECHARGES WHERE PARTITION_DATE = SP2-0042: unknown command "SQLSCRIPT" - rest of line ignored.

Над строкой мне нужно конвертировать, как показано ниже: 1) После каждой 80-й позиции появляется пробел, нужно удалить этот символ и заменить ничем. 2) Последняя часть строки должна быть удалена: «SP2-0042: неизвестная команда« SQLSCRIPT »- остаток строки игнорируется». итоговая строка должна выглядеть примерно так:

SELECT PARTITION_DATE||'|'||RECORD_ID||'|'||BILLING_ACCOUNT_NUM||'|'||BILLING_ACCOUNT_SYSTEM||'|'||BILL_SERIAL_NUM||'|'||BILL_VERSION_NUM||'|'||SERVICE_ACCOUNT_NUM||'|'||SERVICE_ACCOUNT_SYSTEM||'|'||PRIMARY_ASSET_ID||'|'||ASSET_ID||'|'||CHARGE_CATEGORY||'|'||CHARGE_GROUP||'|'||CHARGE_TYPE||'|'||CHARGE_DATE||'|'||CHARGE_END_DATE||'|'||CHARGE_TIME||'|'||ORIGINATING_NUM||'|'||CHARGECARD_NUM||'|'||DIALLED_NUM||'|'||COUNTRY_CODE||'|'||MOBILE_PROVIDER_CODE||'|'||DURATION||'|'||TM_CALL_QUANTITY||'|'||DATA_UPLOAD||'|'||DATA_DOWNLOAD||'|'||CONTENT_DESCRIPTION||'|'||COST||'|'||COST_BEFORE_DISCOUNT||'|'||DISCOUNT||'|'||ROAMING_IND||'|'||VAT_IN D||'|'||VAT_RATE||'|'||CHARGE_CODE||'|'||SOURCE_SYSTEM||'|'||DESTINATION||'|'||F ILE_KEY||'|'||CREATED_DT||'|'||UPDATED_DT||'|'||CALLING_NUMBER||'|'||EVENT_DIREC TION||'|'||EVENT_TYPE||'|'||EVENT_ROAMING_COUNTRY||'|'||DISCOUNT_INDICATOR||'|'||ACCT_CODE||'|'||AUTH_CODE||'|'||ACCESS_CHARGE||'|'||SERVICE_CHARGE||'|'||IMEI_N UMBER||'|'||EFB_FLAG||'|'||RATING_DISCOUNT_NAME||'|'||SUMM_USAGE_FLAG_BKP||'|'|| SUMM_USAGE_FLAG||'|'||PRE_BUNDLE_COST||'|'||POST_BUNDLE_COST||'|'||CFB_COUNTRY_CODE FROM BILLEDUSAGECHARGES WHERE PARTITION_DATE = 

1 Ответ

0 голосов
/ 31 октября 2018
 echo "Put your long string here" | sed 's/ //3' | cut -d= -f1 | sed 's/$/=/'

Это должно сделать это.

Я обнаружил, что 80-й символ - это 3-е вхождение пробела через

echo "Your long string" | cut -d' ' -f3 | wc -m

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...