2009-09-14 47 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