необходимо создать сценарий оболочки или команду в Unix, которая может выполнять следующий процесс (команда предпочтительнее) - PullRequest
2 голосов
/ 11 сентября 2009

по следующему пути

\\ncsusnasent02.na.jnj.com\its_diq_na_win_dev\PowerCenter\infa_shared\WCPIT_BIO_EDW\SrcFiles\DDDMD\DDD.CLI026.WK0933.DDDMR45.001.head

У меня есть один файл DDD.CLI026.WK0933.DDDMR45.001.head

если я открою этот файл я получаю данные следующим образом (в одну строку)

HEADER0101IMS HEALTHDMD Еженедельно D DD.CLI026.WK0933.DDDMR45 Centocor DMDDRM45 W2009080210120090831125325ssnyder@us.imshealth.com
TRAIL0101 000000000 581 0000000000CKSUM000002236804730

нам нужно скопировать из этого файла 581 (она не будет одинаковой всегда обновляется каждый день) и обновите его по следующему адресу

\\ncsusnasent02.na.jnj.com\its_diq_na_win_dev\PowerCenter\infa_shared\WCPIT_BIO_EDW\PrmFiles\LND\IMS_FILE_to_LND.par

когда я открываю этот файл, он имеет следующие данные

[WCPIT_BIO_EDW.WF:w_DDDMD_LNDG_IMS_NONRET_SALES]
$$Cust_RowCount=72648
$$Sales_RowCount=5235998
$$OuletChangeLog_RowCount=931
**$$DRM45_RowCount=581**
$$Control_RowCount=4495
$$Outl_Subcat_RowCount=105
$$Fac_Subcat_RowCount=149

нам нужно обновить 581 против $$ DRM45_RowCount

Ответы [ 2 ]

1 голос
/ 14 сентября 2009

Предполагая, что заголовок находится на одной строке (и вы добавляете "**", чтобы подчеркнуть то, что вы хотите извлечь), вы можете извлечь число с помощью:

export num=$(expr 0 + $(cat infile | cut -c137-148))

Это извлекает номер (при условии, что ваш файл указан правильно). Выражение «0 + n» удалит начальные нули. Затем, используя мой код из вашего другого вопроса:

cat parfile | awk -va=${num} '{
    if (substr($0,1,17) == "$$DRM45_RowCount=") {
        print "$$DRM45_RowCount=" a
    } else {
        print
    }
}' > newparfile

Теперь newparfile должно содержать желаемое значение.

0 голосов
/ 11 сентября 2009

Вероятно, вы можете решить эту проблему с помощью сценариев Windows (я в этом не разбираюсь), но обычно я лучше устанавливаю CygWin и пишу bash / awk / sed скрипт для таких операции. Это приемлемо для вас и вашей ситуации?

...