Нужно реализовать в unix следующую вещь - PullRequest
0 голосов
/ 14 сентября 2009

есть одна переменная var = 581 нам нужно скопировать значение этой переменной по следующему адресу (местоположение) и значение должно отображаться перед $$ DRM45_RowCount

\ ncsusnasent02.na.jnj.com \ its_diq_na_win_dev \ PowerCenter \ infa_shared \ WCPIT_BIO_EDW \ PrmFiles \ лимфаденэктомии \ IMS_FILE_to_LND.par

когда я открываю этот файл 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

1 Ответ

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

Если вы просто хотите заменить значение $$DRM45_RowCount, вы можете использовать awk следующим образом:

awk -va=99 '{
    if (substr($0,1,17) == "$$DRM45_RowCount=") {
        print "$$DRM45_RowCount=" a
    } else {
        print
    }
}'

Элементы управления -va=99 заменяют текущее значение (в данном случае оно изменяется на 99).

Следующая тестовая команда:

echo '[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' | awk -va=99 '{
    if (substr($0,1,17) == "$$DRM45_RowCount=") {
        print "$$DRM45_RowCount=" a
    } else {
        print
    }
}'

выходы:

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

В качестве альтернативы вы можете использовать sed:

sed 's/^$$DRM45_RowCount=.*$/$$DRM45_RowCount=99/'

или

export a=99
sed "s/^\$\$DRM45_RowCount=.*$/\$\$DRM45_RowCount=$a/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...