Заменяет строку на sed или awk, где она идентифицирует скороговорку, как указано ниже :
Пример : он ищет слово, начинающееся с "XX" и заканчивающееся на "XX", и заменяет слово на конкатенирующий на "$ {hf:" в начале "XX" и "}" в конце "ХХ"
ВХОД
CREATE TABLE XX_DB_XX.test_XX_YYYYMMDD_XX
AS
SELECT id
FROM XX_R_DB_XX.usr_XX_YYYYMMDD_XX
WHERE year = XX_YYYY_XX
AND month = XX_MM_XX
AND day = XX_DD_XX;
OUTPUT
CREATE TABLE ${hf:XX_DB_XX}.test_${hf:XX_YYYYMMDD_XX}
AS
SELECT id
FROM ${hf:XX_R_DB_XX}.usr_${hf:XX_YYYYMMDD_XX}
WHERE year = ${hf:XX_YYYY_XX}
AND month = ${hf:XX_MM_XX}
AND day = ${hf:XX_DD_XX};
Пытался заменить сопоставление с образцом, но проблема в том, что в выводе я хочу заменить $ A на строку «XX _ (*) _ XX», доступную поверх входного файла.
cat test.hql | gawk '{ print gensub(/XX_+[A-Z,_]+_XX/, "${hiveconf:$A}", 1)
}' | gawk '{ print gensub(/XX_+[A-Z]+_XX/, "${hiveconf:$A}", 1) }'
ВЫХОД: -> То, что я получил, необходимо обновить с доступной строкой, так как это можно сделать:
CREATE TABLE ${hiveconf:$A}.test_${hiveconf:$A}
AS
SELECT id
FROM ${hiveconf:$A}.usr_${hiveconf:$A}
WHERE year = ${hiveconf:$A}
AND month = ${hiveconf:$A}
AND day = ${hiveconf:$A};