2009-09-14 45 views
0

,有个变量VAR = 581 我们需要把这个变量的值在以下地址(位置) 和值应出现在前复制$$ DRM45_RowCount需要UNIX实现以下事情

\ 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 

我们需要更新对581 $$ DRM45_RowCount

+1

礼貌是件好事。 – xtofl 2009-09-14 05:33:55

回答

2

如果你只是要替换的$$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/" 
+0

除了谢谢 可以üplz看看以下问题。其主要问题 链接是http://stackoverflow.com/questions/1409565/need-to-create-a-shell-script-or-a-command- in-unix-which-do-the-following-pr – Irveen 2009-09-14 06:11:39

+0

它是“:接受谢谢”........ :) – Irveen 2009-09-14 06:29:19