2

次のパスで

\\ncsusnasent02.na.jnj.com\its_diq_na_win_dev\PowerCenter\infa_shared\WCPIT_BIO_EDW\SrcFiles\DDDMD\DDD.CLI026.WK0933.DDDMR45.001.head

私は1つのファイルDDD.CLI026.WK0933.DDDMR45.001.headを持っています

このファイルを開くと、次のようにデータが取得されます(1行で)

HEADER0101IMS HEALTHDMD ウィークリー D DD.CLI026.WK0933.DDDMR45 Centocor DMDDRM45 W2009080210120090831125325ssnyder@us.imshealth.com
TRAIL0101 000000000 581 0000000000CKSUM000002230680

このファイルから 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 を更新する必要があります

4

2 に答える 2

1

ヘッダーがすべて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で、必要な値が含まれているはずです。

于 2009-09-14T06:28:37.783 に答える
0

おそらく Windows スクリプトを使用してこれを解決できますが (私はその専門家ではありません)、通常はCygWinをインストールして、そのような操作用のbash/awk/sedスクリプトを作成します。これはあなたとあなたの状況に受け入れられますか?

于 2009-09-11T08:04:34.167 に答える