在以下路径
\\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 Weekly 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
我们需要针对$$ DRM45_RowCount
更新581答案 0 :(得分:1)
假设标题全部在一行上(并且您添加了“**”以强调要提取的内容),您可以使用以下内容提取数字:
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
应包含您想要的值。
答案 1 :(得分:0)
可能你可以使用Windows脚本解决这个问题(我不是那里的专家),但通常我宁愿安装 CygWin 并写一个 bash / awk / sed 脚本对于这样的操作。这对你和你的情况是否可以接受?