ファイル行のテキストを増分に置き換える

ファイル行のテキストを増分に置き換える

複数行を含むファイルがあります(行数が不明)。

DD0TRANSID000019021210504250003379433005533665506656000008587201902070168304000.0AK  0000L00000.00  N          01683016832019021220190212N0000.001683065570067.000000.00000.0000000000000NAcknowledgment                                                                                                                                        
DD0TRANSID000019021210505110003379433005535567606656000008587201902085381804000.0FC  0000L00000.00  N          53818538182019021220190212N0000.053818065570067.000000.00000.0000000000000NFirst Contact                                                                                                                                         
DD0TRANSID000019021210510360003379433005535568006656000008587201902085381804000.0SR  0000L00000.00  N          53818538182019021220190212N0000.0

TRANSID000テキストは、位置3から10までのすべての行にあり、それを1つずつTRAN000066に置き換えることができる必要があります。

66は、カウンタの開始を保存するために別のファイル(nextcounterなど)から取得された変数です。プログラムがすべての行を更新したら、最後の数字をキャプチャして次のカウンタファイルを更新できます。

出力

DD0TRAN00066019021210504250003379433005533665506656000008587201902070168304000.0AK  0000L00000.00  N          01683016832019021220190212N0000.001683065570067.000000.00000.0000000000000NAcknowledgment                                                                                                                                        
    DD0TRAN00067019021210505110003379433005535567606656000008587201902085381804000.0FC  0000L00000.00  N          53818538182019021220190212N0000.053818065570067.000000.00000.0000000000000NFirst Contact                                                                                                                                         
    DD0TRAN00068019021210510360003379433005535568006656000008587201902085381804000.0SR  0000L00000.00  N          53818538182019021220190212N0000.053818065570067.000000.00000.0000000000000NStatus Report                                                                                                                                         

ベストアンサー1

そしてperl

perl -spe 's/TRANSID000\K/$n++/e' -- -n=66 < your-file

または、長さが5になるように数字に0を埋める必要がある場合(00001、00010、00100...):

perl -spe 's/TRANSID\K000/sprintf "%05d", $n++/e' -- -n=66 < your-file

おすすめ記事