Я работаю над действительно базовым сценарием (я нуб), который выполняет следующее:
1) Извлекает ключи учетных записей из текстового файла (keyList.txt) -> формат ключа выглядит следующим образомthis: 1002000222,1002000400
2) Для каждого ключа, который я перебираю и вставляю (используя SED) в SQL-запросы, содержащиеся в другом текстовом файле.
3) Пример запроса:
UPSERT INTO ACCT_HIST (ACCT_KEY,CLS_TYP_KEY,DT_KEY,PRD_TYP_KEY,FEE_IND,LIAB_IND,CCY_CD,JOB_SEQ,UV_AMT)SELECT ACCT_KEY,CLS_TYP_KEY,current_date(),CREATED_TMSTP,LST_UPD_TMSTP,LST_UPD_BY,'ACCT TRANSFER DEACTIVATION',DELETE_FLAG,'N'FROM ACCT_HIST WHERE ACCT_KEY IN (101000033333) AND REC_ACTV_IND = 'Y' AND DT_KEY < 20191009;
Ниже приведен мой фрагмент кода Bash, но для краткого изложения проблемы SED заменяет значения в круглых скобках по одному ключу за раз, а не помещает ихоба в том же месте скобок. Ниже теперь работает отлично.
#!/bin/bash
now=$(date +"%Y%m%d-%H:%M")
cp acct_transfer_soft_del_list.csv keyList_$now.txt
for key in $(<keyList_$now.txt)
do
sed "s/([^)]*)/(${key})/3" hbase.txt >> queries_$now.txt
done
hbase.txt содержит запросы, но я не хочу их постоянно изменять, поэтому я отправляю вывод в query_ $ now.txt. Как уже упоминалось, в файл запроса отправляется только второй ключ, а не оба. Любые советы являются соответствующими.