【问题标题】:Need to implement in unix following thing需要在unix中实现以下东西
【发布时间】:2009-09-14 05:30:34
【问题描述】:

只有一个变量var=581 我们需要将这个变量的值复制到以下地址(位置) 并且值应该出现在 $$DRM45_RowCount

的前面

\ncsusnasent02.na.jnj.com\its_diq_na_win_dev\PowerCenter\infa_shared\WCPIT_BIO_EDW\PrmFiles\LND\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

我们需要根据 $$DRM45_RowCount 更新 581

【问题讨论】:

    标签: unix shell


    【解决方案1】:

    如果只想替换$$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/"
    

    【讨论】:

    猜你喜欢
    • 2018-04-15
    • 2020-02-03
    • 2022-12-18
    • 2021-06-29
    • 2019-09-20
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多