necesita crear un script de shell o un comando en unix que pueda realizar el siguiente proceso (se preferirá el comando)
Pregunta
en la siguiente ruta
\\ncsusnasent02.na.jnj.com\its_diq_na_win_dev\PowerCenter\infa_shared\WCPIT_BIO_EDW\SrcFiles\DDDMD\DDD.CLI026.WK0933.DDDMR45.001.head
Tengo un archivo DDD.CLI026.WK0933.DDDMR45.001.head
si abro este archivo Obtengo los datos de la siguiente manera (en una sola línea)
HEADER0101IMS HEALTHDMD Semanal D DD.CLI026.WK0933.DDDMR45 Centocor DMDDRM45 W2009080210120090831125325ssnyder@us.imshealth.com
TRAIL0101 000000000 581 0000000000CKSUM000002236804730
necesitamos copiar 581 (no será lo mismo siempre que se actualice todos los días) de este archivo y actualízalo en la siguiente ubicación
\\ncsusnasent02.na.jnj.com\its_diq_na_win_dev\PowerCenter\infa_shared\WCPIT_BIO_EDW\PrmFiles\LND\IMS_FILE_to_LND.par
cuando abro este archivo, tiene los siguientes datos
[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
necesitamos actualizar 581 contra $$ DRM45_RowCount
Solución
Suponiendo que el encabezado está todo en una sola línea (y usted ha agregado " ** " solo para enfatizar lo que desea extraer), puede extraer el número con:
export num=$(expr 0 + $(cat infile | cut -c137-148))
Esto extrae el número (asumiendo que su archivo está especificado correctamente). La expresión " 0 + n " eliminará los ceros iniciales. Luego, usando mi código de tu otra pregunta:
cat parfile | awk -va=${num} '{
if (substr(<*>,1,17) == "$DRM45_RowCount=") {
print "$DRM45_RowCount=" a
} else {
print
}
}' > newparfile
Ahora newparfile
debe contener el valor que desea.
Otros consejos
Probablemente puedas resolver esto usando scripts de Windows (no soy experto en eso), pero generalmente prefiero instalar CygWin y escribí un script de bash / awk / sed para tales operaciones. ¿Es esto aceptable para usted y su situación?